diff --git a/MOVED b/MOVED
index de9b3e40b8479bbda2600ce2b29c386e4d5b93b0..a9da75aaac536b5e589fb87715fafdfd161ee39c 100644
--- a/MOVED
+++ b/MOVED
@@ -16327,3 +16327,4 @@ devel/rubygem-licensee8|devel/rubygem-licensee|2021-05-03|Obsolete, please use d
 devel/rubygem-ruby-magic-static|devel/rubygem-ruby-magic|2021-05-03|Obsolete, please use devel/rubygem-ruby-magic
 devel/gecode|math/gecode|2021-05-04|Move to a proper category
 net-im/libqmatrixclient|devel/libquotient|2021-05-08|Has expired: Use libQuotient (devel/libquotient) instead
+devel/electron11|devel/electron12|2021-05-12|VSCode update requires a newer major version
diff --git a/devel/Makefile b/devel/Makefile
index de42cdb96f1b91a55335d8b9f866a2a8c31cc99e..7eba1549b4d8350e5f92bb05c61cb5c2f286d1a2 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -535,7 +535,7 @@
     SUBDIR += efl
     SUBDIR += egypt
     SUBDIR += eiffelstudio
-    SUBDIR += electron11
+    SUBDIR += electron12
     SUBDIR += elf
     SUBDIR += elfio
     SUBDIR += elfkickers
diff --git a/devel/electron11/distinfo b/devel/electron11/distinfo
deleted file mode 100644
index e0d28dffe39afdffa44717900aec7638555638a4..0000000000000000000000000000000000000000
--- a/devel/electron11/distinfo
+++ /dev/null
@@ -1,15 +0,0 @@
-TIMESTAMP = 1619857372
-SHA256 (electron/chromium-87.0.4280.141.tar.xz) = 147591d7fc21e1a173701d28bbf35baddb91e64dd96ec16d8eee9a5113403375
-SIZE (electron/chromium-87.0.4280.141.tar.xz) = 856467564
-SHA256 (electron/a9603a3dc03fa41af9cc5c8ac28d23d1f98dfe3c) = b8b23fa102ddea8b6b4b6b9161c76636fd48b37e6bcfe955e56bfe04e31ba13b
-SIZE (electron/a9603a3dc03fa41af9cc5c8ac28d23d1f98dfe3c) = 8072260
-SHA256 (electron/cd96fc55dc243f6c6f4cb63ad117cad6cd48dceb) = ec973eccd669d417fbf2d0a4dac730744a3174268ff062db5451b55c82bc3492
-SIZE (electron/cd96fc55dc243f6c6f4cb63ad117cad6cd48dceb) = 26759650
-SHA256 (electron/electron-yarn-cache-11.4.4.tar.xz) = 72764c221da243327e1f06b06ff561505bc4f81a238394afd0ecef3a2bce1fd5
-SIZE (electron/electron-yarn-cache-11.4.4.tar.xz) = 27493860
-SHA256 (electron/electron-electron-v11.4.4_GH0.tar.gz) = 2414917d9428116b834e3434d40b9576f72ac8ce332ef6f74eccd8de3a1dcaf1
-SIZE (electron/electron-electron-v11.4.4_GH0.tar.gz) = 6441275
-SHA256 (electron/nodejs-node-v12.18.3_GH0.tar.gz) = 6e2730c9284906a0f34cd7c64540c891c0e363323c46e9fc005c6366ddf389c6
-SIZE (electron/nodejs-node-v12.18.3_GH0.tar.gz) = 77078855
-SHA256 (electron/nodejs-nan-2c4ee8a32a299eada3cd6e468bbd0a473bfea96d_GH0.tar.gz) = e4ff33afb043329429c9551d3cc983786553a310a7d61ee313485ba3ac9b2b15
-SIZE (electron/nodejs-nan-2c4ee8a32a299eada3cd6e468bbd0a473bfea96d_GH0.tar.gz) = 178328
diff --git a/devel/electron11/files/patch-apps_ui_views_app__window__frame__view.cc b/devel/electron11/files/patch-apps_ui_views_app__window__frame__view.cc
deleted file mode 100644
index 229246bd79763e96e0603a9050e3dee102cf60be..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-apps_ui_views_app__window__frame__view.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- apps/ui/views/app_window_frame_view.cc.orig	2021-01-07 00:36:17 UTC
-+++ apps/ui/views/app_window_frame_view.cc
-@@ -132,7 +132,7 @@ gfx::Rect AppWindowFrameView::GetBoundsForClientView()
- gfx::Rect AppWindowFrameView::GetWindowBoundsForClientBounds(
-     const gfx::Rect& client_bounds) const {
-   gfx::Rect window_bounds = client_bounds;
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
-   // Get the difference between the widget's client area bounds and window
-   // bounds, and grow |window_bounds| by that amount.
-   gfx::Insets native_frame_insets =
diff --git a/devel/electron11/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h b/devel/electron11/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h
deleted file mode 100644
index a329139890120b5ef54c727675c71f2bd05a8546..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- base/allocator/partition_allocator/page_allocator_internals_posix.h.orig	2021-01-07 00:36:18 UTC
-+++ base/allocator/partition_allocator/page_allocator_internals_posix.h
-@@ -24,7 +24,7 @@
- #if defined(OS_ANDROID)
- #include <sys/prctl.h>
- #endif
--#if defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
- #include <sys/resource.h>
- 
- #include <algorithm>
diff --git a/devel/electron11/files/patch-base_allocator_partition__allocator_partition__alloc__unittest.cc b/devel/electron11/files/patch-base_allocator_partition__allocator_partition__alloc__unittest.cc
deleted file mode 100644
index f1dea4369b6284852c79c67da44c712c11b36c57..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-base_allocator_partition__allocator_partition__alloc__unittest.cc
+++ /dev/null
@@ -1,26 +0,0 @@
---- base/allocator/partition_allocator/partition_alloc_unittest.cc.orig	2021-01-07 00:36:18 UTC
-+++ base/allocator/partition_allocator/partition_alloc_unittest.cc
-@@ -333,9 +333,13 @@ void FreeFullPage(PartitionRoot<base::internal::Thread
-   }
- }
- 
--#if defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
- bool CheckPageInCore(void* ptr, bool in_core) {
-+#if defined(OS_BSD)
-+  char ret = 0;
-+#else
-   unsigned char ret = 0;
-+#endif
-   EXPECT_EQ(0, mincore(ptr, SystemPageSize(), &ret));
-   return in_core == (ret & 1);
- }
-@@ -344,7 +348,7 @@ bool CheckPageInCore(void* ptr, bool in_core) {
-   EXPECT_TRUE(CheckPageInCore(ptr, in_core))
- #else
- #define CHECK_PAGE_IN_CORE(ptr, in_core) (void)(0)
--#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
- 
- class MockPartitionStatsDumper : public PartitionStatsDumper {
-  public:
diff --git a/devel/electron11/files/patch-base_base__switches.cc b/devel/electron11/files/patch-base_base__switches.cc
deleted file mode 100644
index 84de035201d4e522dafae9e5f7fd2633d73ce205..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-base_base__switches.cc
+++ /dev/null
@@ -1,20 +0,0 @@
---- base/base_switches.cc.orig	2021-01-07 00:36:18 UTC
-+++ base/base_switches.cc
-@@ -117,7 +117,7 @@ const char kDisableHighResTimer[] = "disable-highres-t
- const char kDisableUsbKeyboardDetect[]      = "disable-usb-keyboard-detect";
- #endif
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !BUILDFLAG(IS_LACROS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS) && !BUILDFLAG(IS_LACROS)) || defined(OS_BSD)
- // The /dev/shm partition is too small in certain VM environments, causing
- // Chrome to fail or crash (see http://crbug.com/715363). Use this flag to
- // work-around this issue (a temporary directory will always be used to create
-@@ -152,7 +152,7 @@ const char kForceFieldTrialParams[] = "force-fieldtria
- 
- #endif
- 
--#if defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
- // Controls whether or not retired instruction counts are surfaced for threads
- // in trace events on Linux.
- //
diff --git a/devel/electron11/files/patch-base_base__switches.h b/devel/electron11/files/patch-base_base__switches.h
deleted file mode 100644
index 965ee02b77501bbac6ca12ce21d931ac16203033..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-base_base__switches.h
+++ /dev/null
@@ -1,20 +0,0 @@
---- base/base_switches.h.orig	2021-01-07 00:36:18 UTC
-+++ base/base_switches.h
-@@ -39,7 +39,7 @@ extern const char kDisableHighResTimer[];
- extern const char kDisableUsbKeyboardDetect[];
- #endif
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !BUILDFLAG(IS_LACROS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS) && !BUILDFLAG(IS_LACROS)) || defined(OS_BSD)
- extern const char kDisableDevShmUsage[];
- #endif
- 
-@@ -55,7 +55,7 @@ extern const char kEnableIdleTracing[];
- extern const char kForceFieldTrialParams[];
- #endif
- 
--#if defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
- extern const char kEnableThreadInstructionCount[];
- #endif
- 
diff --git a/devel/electron11/files/patch-base_debug_stack__trace__posix.cc b/devel/electron11/files/patch-base_debug_stack__trace__posix.cc
deleted file mode 100644
index c577d9be2386ffb8b9cfb6f2f6f47e3177632ce6..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-base_debug_stack__trace__posix.cc
+++ /dev/null
@@ -1,23 +0,0 @@
---- base/debug/stack_trace_posix.cc.orig	2021-01-07 00:36:18 UTC
-+++ base/debug/stack_trace_posix.cc
-@@ -35,7 +35,7 @@
- #include <AvailabilityMacros.h>
- #endif
- 
--#if defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
- #include "base/debug/proc_maps_linux.h"
- #endif
- 
-@@ -697,7 +697,11 @@ class SandboxSymbolizeHelper {
-           // Skip regions with empty file names.
-           continue;
-         }
-+#if defined(OS_BSD)
-+	if (region.path[0] == '-') {
-+#else	
-         if (region.path[0] == '[') {
-+#endif
-           // Skip pseudo-paths, like [stack], [vdso], [heap], etc ...
-           continue;
-         }
diff --git a/devel/electron11/files/patch-base_files_file__path__watcher__stub.cc b/devel/electron11/files/patch-base_files_file__path__watcher__stub.cc
deleted file mode 100644
index 74a2340a4012a1a66d4cc41742bb034d0dc8edcb..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-base_files_file__path__watcher__stub.cc
+++ /dev/null
@@ -1,53 +0,0 @@
---- base/files/file_path_watcher_stub.cc.orig	2021-01-07 00:36:18 UTC
-+++ base/files/file_path_watcher_stub.cc
-@@ -1,14 +1,15 @@
--// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-+// Copyright 2014 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- 
--// This file exists for Unix systems which don't have the inotify headers, and
--// thus cannot build file_watcher_inotify.cc
- 
--#include "base/files/file_path_watcher.h"
-+#include <memory>
- 
-+#include "base/files/file_path_watcher.h"
-+#include "base/files/file_path_watcher_kqueue.h"
- #include "base/macros.h"
- #include "base/memory/ptr_util.h"
-+#include "build/build_config.h"
- 
- namespace base {
- 
-@@ -22,12 +23,29 @@ class FilePathWatcherImpl : public FilePathWatcher::Pl
-   bool Watch(const FilePath& path,
-              bool recursive,
-              const FilePathWatcher::Callback& callback) override {
-+#if defined(OS_BSD)
-+    DCHECK(!impl_.get());
-+    if (recursive) {
-+      return false;
-+    } else {
-+      impl_ = std::make_unique<FilePathWatcherKQueue>();
-+    }
-+    DCHECK(impl_.get());
-+    return impl_->Watch(path, recursive, callback);
-+#else
-     return false;
-+#endif
-   }
- 
--  void Cancel() override {}
-+  void Cancel() override {
-+    if (impl_.get())
-+      impl_->Cancel();
-+    set_cancelled();
-+  }
- 
-  private:
-+  std::unique_ptr<PlatformDelegate> impl_;
-+
-   DISALLOW_COPY_AND_ASSIGN(FilePathWatcherImpl);
- };
- 
diff --git a/devel/electron11/files/patch-base_memory_platform__shared__memory__region__posix.cc b/devel/electron11/files/patch-base_memory_platform__shared__memory__region__posix.cc
deleted file mode 100644
index 07c939874b74a38377cc791e8978b978101f4506..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-base_memory_platform__shared__memory__region__posix.cc
+++ /dev/null
@@ -1,38 +0,0 @@
---- base/memory/platform_shared_memory_region_posix.cc.orig	2021-01-07 00:36:18 UTC
-+++ base/memory/platform_shared_memory_region_posix.cc
-@@ -70,7 +70,7 @@ FDPair ScopedFDPair::get() const {
-   return {fd.get(), readonly_fd.get()};
- }
- 
--#if defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
- // static
- ScopedFD PlatformSharedMemoryRegion::ExecutableRegion::CreateFD(size_t size) {
-   PlatformSharedMemoryRegion region =
-@@ -79,7 +79,7 @@ ScopedFD PlatformSharedMemoryRegion::ExecutableRegion:
-     return region.PassPlatformHandle().fd;
-   return ScopedFD();
- }
--#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
- 
- // static
- PlatformSharedMemoryRegion PlatformSharedMemoryRegion::Take(
-@@ -204,7 +204,7 @@ bool PlatformSharedMemoryRegion::MapAtInternal(off_t o
- // static
- PlatformSharedMemoryRegion PlatformSharedMemoryRegion::Create(Mode mode,
-                                                               size_t size
--#if defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
-                                                               ,
-                                                               bool executable
- #endif
-@@ -233,7 +233,7 @@ PlatformSharedMemoryRegion PlatformSharedMemoryRegion:
-   // flag.
-   FilePath directory;
-   if (!GetShmemTempDir(
--#if defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
-           executable,
- #else
-           false /* executable */,
diff --git a/devel/electron11/files/patch-base_process_launch__posix.cc b/devel/electron11/files/patch-base_process_launch__posix.cc
deleted file mode 100644
index ac15da5f01b76c735a3c591bd03fd3dc5326b427..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-base_process_launch__posix.cc
+++ /dev/null
@@ -1,39 +0,0 @@
---- base/process/launch_posix.cc.orig	2021-01-07 00:36:18 UTC
-+++ base/process/launch_posix.cc
-@@ -65,6 +65,7 @@
- #error "macOS should use launch_mac.cc"
- #endif
- 
-+#pragma weak environ
- extern char** environ;
- 
- namespace base {
-@@ -228,6 +229,28 @@ void CloseSuperfluousFds(const base::InjectiveMultimap
-   DirReaderPosix fd_dir(kFDDir);
-   if (!fd_dir.IsValid()) {
-     // Fallback case: Try every possible fd.
-+
-+#if defined(OS_FREEBSD)
-+    // CEM: blast away most of the range with closefrom().  A common use case
-+    // of this function only maps STDIN/STDOUT/STDERR and closefrom(3) is much
-+    // cheaper than x00,000 close(2) invocations with a high RLIMIT_NOFILE.
-+    //
-+    // In the other caller, it is still very likely that the fds we care about
-+    // are in relatively low number space and we can save hundreds of thousands
-+    // of syscalls.
-+    int max_valid_fd = -1;
-+    for (size_t j = 0; j < saved_mapping.size(); j++) {
-+      int fd = saved_mapping[j].dest;
-+      if (fd > max_valid_fd)
-+	max_valid_fd = fd;
-+    }
-+    if (max_valid_fd < STDERR_FILENO)
-+      max_valid_fd = STDERR_FILENO;
-+
-+    closefrom(max_valid_fd + 1);
-+    max_fds = static_cast<size_t>(max_valid_fd) + 1;
-+#endif
-+
-     for (size_t i = 0; i < max_fds; ++i) {
-       const int fd = static_cast<int>(i);
-       if (fd == STDIN_FILENO || fd == STDOUT_FILENO || fd == STDERR_FILENO)
diff --git a/devel/electron11/files/patch-base_system_sys__info__posix.cc b/devel/electron11/files/patch-base_system_sys__info__posix.cc
deleted file mode 100644
index d912d2a54611c352f835229ba4f9af929cc3e2bb..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-base_system_sys__info__posix.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- base/system/sys_info_posix.cc.orig	2021-01-07 00:36:18 UTC
-+++ base/system/sys_info_posix.cc
-@@ -223,6 +223,8 @@ std::string SysInfo::OperatingSystemArchitecture() {
-     arch = "x86";
-   } else if (arch == "amd64") {
-     arch = "x86_64";
-+  } else if (arch == "arm64") {
-+    arch = "aarch64";
-   } else if (std::string(info.sysname) == "AIX") {
-     arch = "ppc64";
-   }
diff --git a/devel/electron11/files/patch-base_threading_thread__task__runner__handle.cc b/devel/electron11/files/patch-base_threading_thread__task__runner__handle.cc
deleted file mode 100644
index 1088b34bb8f587b69f59d93c08ba54309087bdc9..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-base_threading_thread__task__runner__handle.cc
+++ /dev/null
@@ -1,26 +0,0 @@
---- base/threading/thread_task_runner_handle.cc.orig	2021-01-07 00:36:18 UTC
-+++ base/threading/thread_task_runner_handle.cc
-@@ -8,6 +8,7 @@
- #include <utility>
- 
- #include "base/bind.h"
-+#include "base/callback_helpers.h"
- #include "base/check_op.h"
- #include "base/lazy_instance.h"
- #include "base/run_loop.h"
-@@ -38,6 +39,7 @@ bool ThreadTaskRunnerHandle::IsSet() {
-   return !!thread_task_runner_tls.Pointer()->Get();
- }
- 
-+#if defined(OS_BSD)
- // static
- ScopedClosureRunner ThreadTaskRunnerHandle::OverrideForTesting(
-     scoped_refptr<SingleThreadTaskRunner> overriding_task_runner) {
-@@ -82,6 +84,7 @@ ScopedClosureRunner ThreadTaskRunnerHandle::OverrideFo
-       base::Unretained(ttrh->task_runner_.get()),
-       std::move(no_running_during_override)));
- }
-+#endif
- 
- ThreadTaskRunnerHandle::ThreadTaskRunnerHandle(
-     scoped_refptr<SingleThreadTaskRunner> task_runner)
diff --git a/devel/electron11/files/patch-base_trace__event_process__memory__dump.h b/devel/electron11/files/patch-base_trace__event_process__memory__dump.h
deleted file mode 100644
index 6115a7a755491f4dd9a20e9dc1678d28211944d1..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-base_trace__event_process__memory__dump.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- base/trace_event/process_memory_dump.h.orig	2021-01-07 00:36:18 UTC
-+++ base/trace_event/process_memory_dump.h
-@@ -22,7 +22,7 @@
- 
- // Define COUNT_RESIDENT_BYTES_SUPPORTED if platform supports counting of the
- // resident memory.
--#if !defined(OS_NACL)
-+#if !defined(OS_NACL) && !defined(OS_BSD)
- #define COUNT_RESIDENT_BYTES_SUPPORTED
- #endif
- 
diff --git a/devel/electron11/files/patch-base_util_memory__pressure_system__memory__pressure__evaluator.cc b/devel/electron11/files/patch-base_util_memory__pressure_system__memory__pressure__evaluator.cc
deleted file mode 100644
index d91e4e66ed719d4bce5ed10a09584019a50c1d32..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-base_util_memory__pressure_system__memory__pressure__evaluator.cc
+++ /dev/null
@@ -1,20 +0,0 @@
---- base/util/memory_pressure/system_memory_pressure_evaluator.cc.orig	2021-01-07 00:36:18 UTC
-+++ base/util/memory_pressure/system_memory_pressure_evaluator.cc
-@@ -14,7 +14,7 @@
- #elif defined(OS_WIN)
- #include "base/util/memory_pressure/system_memory_pressure_evaluator_win.h"
- #include "base/win/windows_version.h"
--#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- #include "base/util/memory_pressure/system_memory_pressure_evaluator_linux.h"
- #endif
- 
-@@ -45,7 +45,7 @@ SystemMemoryPressureEvaluator::CreateDefaultSystemEval
-     evaluator->CreateOSSignalPressureEvaluator(monitor->CreateVoter());
-   }
-   return evaluator;
--#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   return std::make_unique<util::os_linux::SystemMemoryPressureEvaluator>(
-       monitor->CreateVoter());
- #endif
diff --git a/devel/electron11/files/patch-build_config_BUILD.gn b/devel/electron11/files/patch-build_config_BUILD.gn
deleted file mode 100644
index cd54618fa830d59eb426d0c8acec0631022c1407..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-build_config_BUILD.gn
+++ /dev/null
@@ -1,30 +0,0 @@
---- build/config/BUILD.gn.orig	2021-01-07 00:36:18 UTC
-+++ build/config/BUILD.gn
-@@ -133,7 +133,7 @@ config("debug") {
-       # builds, and we have to tell it to turn it off.
-       defines += [ "_HAS_ITERATOR_DEBUGGING=0" ]
-     }
--  } else if ((is_linux || is_chromeos) && current_cpu == "x64" && enable_iterator_debugging) {
-+  } else if ((is_linux || is_chromeos || is_bsd) && current_cpu == "x64" && enable_iterator_debugging) {
-     # Enable libstdc++ debugging facilities to help catch problems early, see
-     # http://crbug.com/65151 .
-     # TODO(phajdan.jr): Should we enable this for all of POSIX?
-@@ -231,9 +231,7 @@ config("default_libs") {
-     ]
-   } else if (is_linux || is_chromeos) {
-     libs = [
--      "dl",
-       "pthread",
--      "rt",
-     ]
-   }
- }
-@@ -316,7 +314,7 @@ config("executable_config") {
-       "//build/config/ios:ios_dynamic_flags",
-       "//build/config/ios:ios_executable_flags",
-     ]
--  } else if (is_linux || is_chromeos || is_android || current_os == "aix") {
-+  } else if (is_linux || is_bsd || is_chromeos || is_android || current_os == "aix") {
-     configs += [ "//build/config/gcc:executable_config" ]
-     if (is_chromecast) {
-       configs += [ "//build/config/chromecast:executable_config" ]
diff --git a/devel/electron11/files/patch-build_config_compiler_compiler.gni b/devel/electron11/files/patch-build_config_compiler_compiler.gni
deleted file mode 100644
index 34cba2947a27b07973ae829e4809c4ceb7773a11..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-build_config_compiler_compiler.gni
+++ /dev/null
@@ -1,11 +0,0 @@
---- build/config/compiler/compiler.gni.orig	2021-01-07 00:36:18 UTC
-+++ build/config/compiler/compiler.gni
-@@ -192,7 +192,7 @@ declare_args() {
- declare_args() {
-   # Whether to use the gold linker from binutils instead of lld or bfd.
-   use_gold =
--      !use_lld && !(is_chromecast && is_linux &&
-+      !is_bsd && !use_lld && !(is_chromecast && is_linux &&
-                     (current_cpu == "arm" || current_cpu == "mipsel")) &&
-       ((is_linux && (current_cpu == "x64" || current_cpu == "x86" ||
-                      current_cpu == "arm" || current_cpu == "arm64" ||
diff --git a/devel/electron11/files/patch-build_config_compiler_pgo_pgo.gni b/devel/electron11/files/patch-build_config_compiler_pgo_pgo.gni
deleted file mode 100644
index 5404a9fbf37dd920a4bce6ec227b6722f9077546..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-build_config_compiler_pgo_pgo.gni
+++ /dev/null
@@ -1,11 +0,0 @@
---- build/config/compiler/pgo/pgo.gni.orig	2021-01-07 00:36:18 UTC
-+++ build/config/compiler/pgo/pgo.gni
-@@ -12,7 +12,7 @@ declare_args() {
-   #     2 : Used during the PGO (optimization) phase.
-   chrome_pgo_phase = 0
-   if (is_official_build &&
--      (is_win || is_mac || (is_desktop_linux && !chromeos_is_browser_only))) {
-+      (is_win || is_mac || (is_desktop_linux && !chromeos_is_browser_only && !is_bsd))) {
-     chrome_pgo_phase = 2
-   }
- 
diff --git a/devel/electron11/files/patch-chrome_app_chrome__command__ids.h b/devel/electron11/files/patch-chrome_app_chrome__command__ids.h
deleted file mode 100644
index a56be10aece64501bcc0726a665b1f8bec302ec2..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_app_chrome__command__ids.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- chrome/app/chrome_command_ids.h.orig	2021-01-07 00:36:20 UTC
-+++ chrome/app/chrome_command_ids.h
-@@ -61,7 +61,7 @@
- #define IDC_ALL_WINDOWS_FRONT           34048
- #define IDC_NAME_WINDOW                 34049
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
- #define IDC_USE_SYSTEM_TITLE_BAR        34051
- #define IDC_RESTORE_WINDOW              34052
- #endif
diff --git a/devel/electron11/files/patch-chrome_app_chrome__main.cc b/devel/electron11/files/patch-chrome_app_chrome__main.cc
deleted file mode 100644
index eafa71eebe1bbc2cc5f8e95d76c0e1f5f3be5e8e..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_app_chrome__main.cc
+++ /dev/null
@@ -1,17 +0,0 @@
---- chrome/app/chrome_main.cc.orig	2021-01-07 00:36:20 UTC
-+++ chrome/app/chrome_main.cc
-@@ -109,12 +109,12 @@ int ChromeMain(int argc, const char** argv) {
- 
-   // Chrome-specific process modes.
- #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || \
--    defined(OS_WIN)
-+    defined(OS_WIN) || defined(OS_BSD)
-   if (command_line->HasSwitch(switches::kHeadless)) {
-     return headless::HeadlessShellMain(params);
-   }
- #endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) ||
--        // defined(OS_WIN)
-+        // defined(OS_WIN) || defined(OS_BSD)
- 
-   int rv = content::ContentMain(params);
- 
diff --git a/devel/electron11/files/patch-chrome_browser_chrome__browser__main__posix.cc b/devel/electron11/files/patch-chrome_browser_chrome__browser__main__posix.cc
deleted file mode 100644
index 19569017773929414411afd8b8834f7497399ec4..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_chrome__browser__main__posix.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- chrome/browser/chrome_browser_main_posix.cc.orig	2021-01-07 00:36:21 UTC
-+++ chrome/browser/chrome_browser_main_posix.cc
-@@ -70,7 +70,7 @@ void ExitHandler::ExitWhenPossibleOnUIThread(int signa
-     // ExitHandler takes care of deleting itself.
-     new ExitHandler();
-   } else {
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-     switch (signal) {
-       case SIGINT:
-       case SIGHUP:
diff --git a/devel/electron11/files/patch-chrome_browser_chrome__content__browser__client.cc b/devel/electron11/files/patch-chrome_browser_chrome__content__browser__client.cc
deleted file mode 100644
index 9f2189d647c90e77f84f9697c6e09d6b418027d3..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_chrome__content__browser__client.cc
+++ /dev/null
@@ -1,106 +0,0 @@
---- chrome/browser/chrome_content_browser_client.cc.orig	2021-01-07 00:36:21 UTC
-+++ chrome/browser/chrome_content_browser_client.cc
-@@ -424,7 +424,7 @@
- #include "components/user_manager/user.h"
- #include "components/user_manager/user_manager.h"
- #include "services/service_manager/public/mojom/interface_provider_spec.mojom.h"
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
- #include "chrome/browser/chrome_browser_main_linux.h"
- #elif defined(OS_ANDROID)
- #include "base/android/application_status_listener.h"
-@@ -482,7 +482,7 @@
- #endif  //  !defined(OS_ANDROID)
- 
- #if defined(OS_WIN) || defined(OS_MAC) || \
--    (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- #include "chrome/browser/browser_switcher/browser_switcher_navigation_throttle.h"
- #endif
- 
-@@ -514,7 +514,7 @@
- #include "chrome/browser/ui/views/chrome_browser_main_extra_parts_views.h"
- #endif
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- #include "chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.h"
- #endif
- 
-@@ -833,11 +833,13 @@ breakpad::CrashHandlerHostLinux* CreateCrashHandlerHos
- }
- 
- int GetCrashSignalFD(const base::CommandLine& command_line) {
-+#if !defined(OS_BSD)
-   if (crash_reporter::IsCrashpadEnabled()) {
-     int fd;
-     pid_t pid;
-     return crash_reporter::GetHandlerSocket(&fd, &pid) ? fd : -1;
-   }
-+#endif
- 
-   // Extensions have the same process type as renderers.
-   if (command_line.HasSwitch(extensions::switches::kExtensionProcess)) {
-@@ -1364,7 +1366,7 @@ ChromeContentBrowserClient::CreateBrowserMainParts(
- #elif defined(OS_CHROMEOS)
-   main_parts = std::make_unique<chromeos::ChromeBrowserMainPartsChromeos>(
-       parameters, startup_data_);
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
-   main_parts =
-       std::make_unique<ChromeBrowserMainPartsLinux>(parameters, startup_data_);
- #elif defined(OS_ANDROID)
-@@ -1390,7 +1392,7 @@ ChromeContentBrowserClient::CreateBrowserMainParts(
-     // Construct additional browser parts. Stages are called in the order in
-     // which they are added.
- #if defined(TOOLKIT_VIEWS)
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   main_parts->AddParts(
-       std::make_unique<ChromeBrowserMainExtraPartsViewsLinux>());
- #else
-@@ -2144,7 +2146,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLin
-     command_line->AppendSwitchASCII(switches::kMetricsClientID,
-                                     client_info->client_id);
-   }
--#elif defined(OS_POSIX)
-+#elif defined(OS_POSIX) && !defined(OS_BSD)
- #if defined(OS_ANDROID)
-   bool enable_crash_reporter = true;
- #else
-@@ -3738,7 +3740,7 @@ void ChromeContentBrowserClient::GetAdditionalFileSyst
-   }
- }
- 
--#if defined(OS_POSIX) && !defined(OS_MAC)
-+#if defined(OS_POSIX) && !defined(OS_MAC) && !defined(OS_BSD)
- void ChromeContentBrowserClient::GetAdditionalMappedFilesForChildProcess(
-     const base::CommandLine& command_line,
-     int child_process_id,
-@@ -3773,7 +3775,7 @@ void ChromeContentBrowserClient::GetAdditionalMappedFi
-     mappings->Share(kCrashDumpSignal, crash_signal_fd);
-   }
- }
--#endif  // defined(OS_POSIX) && !defined(OS_MAC)
-+#endif  // defined(OS_POSIX) && !defined(OS_MAC) && !defined(OS_BSD)
- 
- #if defined(OS_WIN)
- base::string16 ChromeContentBrowserClient::GetAppContainerSidForSandboxType(
-@@ -3862,7 +3864,7 @@ bool ChromeContentBrowserClient::IsRendererCodeIntegri
- 
- void ChromeContentBrowserClient::WillStartServiceManager() {
- #if defined(OS_WIN) || defined(OS_MAC) || \
--    (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   if (startup_data_) {
-     auto* chrome_feature_list_creator =
-         startup_data_->chrome_feature_list_creator();
-@@ -4104,7 +4106,7 @@ ChromeContentBrowserClient::CreateThrottlesForNavigati
-   }
- 
- #if defined(OS_WIN) || defined(OS_MAC) || \
--    (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   MaybeAddThrottle(browser_switcher::BrowserSwitcherNavigationThrottle::
-                        MaybeCreateThrottleFor(handle),
-                    &throttles);
diff --git a/devel/electron11/files/patch-chrome_browser_defaults.cc b/devel/electron11/files/patch-chrome_browser_defaults.cc
deleted file mode 100644
index 8d6f45794db0648d2650cf7d72161739d29078b7..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_defaults.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- chrome/browser/defaults.cc.orig	2021-01-07 00:36:22 UTC
-+++ chrome/browser/defaults.cc
-@@ -43,7 +43,7 @@ const bool kSyncAutoStarts = true;
- const bool kSyncAutoStarts = false;
- #endif
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
- const bool kScrollEventChangesTab = true;
- #else
- const bool kScrollEventChangesTab = false;
diff --git a/devel/electron11/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc b/devel/electron11/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc
deleted file mode 100644
index 1dd284032f0c407402ec59fa3b86ed87288e908c..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc
+++ /dev/null
@@ -1,20 +0,0 @@
---- chrome/browser/extensions/api/settings_private/prefs_util.cc.orig	2021-01-07 00:36:22 UTC
-+++ chrome/browser/extensions/api/settings_private/prefs_util.cc
-@@ -169,7 +169,7 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlist
-   (*s_allowlist)[bookmarks::prefs::kShowBookmarkBar] =
-       settings_api::PrefType::PREF_TYPE_BOOLEAN;
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   (*s_allowlist)[::prefs::kUseCustomChromeFrame] =
-       settings_api::PrefType::PREF_TYPE_BOOLEAN;
- #endif
-@@ -179,7 +179,7 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlist
-   // Appearance settings.
-   (*s_allowlist)[::prefs::kCurrentThemeID] =
-       settings_api::PrefType::PREF_TYPE_STRING;
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   (*s_allowlist)[::prefs::kUsesSystemTheme] =
-       settings_api::PrefType::PREF_TYPE_BOOLEAN;
- #endif
diff --git a/devel/electron11/files/patch-chrome_browser_first__run_first__run__dialog.h b/devel/electron11/files/patch-chrome_browser_first__run_first__run__dialog.h
deleted file mode 100644
index c0727acba7406d9a40ea13dfa2c8db4ac11702af..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_first__run_first__run__dialog.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- chrome/browser/first_run/first_run_dialog.h.orig	2021-01-07 00:36:23 UTC
-+++ chrome/browser/first_run/first_run_dialog.h
-@@ -9,7 +9,7 @@
- #include "build/build_config.h"
- 
- // Hide this function on platforms where the dialog does not exist.
--#if defined(OS_MAC) || (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+#if defined(OS_MAC) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- 
- class Profile;
- 
diff --git a/devel/electron11/files/patch-chrome_browser_first__run_first__run__internal.h b/devel/electron11/files/patch-chrome_browser_first__run_first__run__internal.h
deleted file mode 100644
index 3bd6d0608f6e616cc2e463dcb2136ae73d599b3d..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_first__run_first__run__internal.h
+++ /dev/null
@@ -1,18 +0,0 @@
---- chrome/browser/first_run/first_run_internal.h.orig	2021-01-07 00:36:23 UTC
-+++ chrome/browser/first_run/first_run_internal.h
-@@ -56,13 +56,13 @@ FirstRunState DetermineFirstRunState(bool has_sentinel
-                                      bool force_first_run,
-                                      bool no_first_run);
- 
--#if defined(OS_MAC) || (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+#if defined(OS_MAC) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- // For testing, forces the first run dialog to either be shown or not. If not
- // called, the decision to show the dialog or not will be made by Chrome based
- // on a number of factors (such as install type, whether it's a Chrome-branded
- // build, etc).
- void ForceFirstRunDialogShownForTesting(bool shown);
--#endif  // defined(OS_MAC) || (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+#endif  // defined(OS_MAC) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- 
- }  // namespace internal
- }  // namespace first_run
diff --git a/devel/electron11/files/patch-chrome_browser_metrics_chrome__metrics__service__client.cc b/devel/electron11/files/patch-chrome_browser_metrics_chrome__metrics__service__client.cc
deleted file mode 100644
index 4bbe96acd50e0de349c247864516725e2725f4b7..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_metrics_chrome__metrics__service__client.cc
+++ /dev/null
@@ -1,25 +0,0 @@
---- chrome/browser/metrics/chrome_metrics_service_client.cc.orig	2021-01-07 00:36:23 UTC
-+++ chrome/browser/metrics/chrome_metrics_service_client.cc
-@@ -685,11 +685,11 @@ void ChromeMetricsServiceClient::RegisterMetricsServic
- #endif  // defined(OS_WIN)
- 
- #if defined(OS_WIN) || defined(OS_MAC) || \
--    (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   metrics_service_->RegisterMetricsProvider(
-       std::make_unique<DesktopPlatformFeaturesMetricsProvider>());
- #endif  //  defined(OS_WIN) || defined(OS_MAC) || \
--        // (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+        // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- 
- #if BUILDFLAG(ENABLE_PLUGINS)
-   plugin_metrics_provider_ = new PluginMetricsProvider(local_state);
-@@ -955,7 +955,7 @@ bool ChromeMetricsServiceClient::RegisterForProfileEve
-   }
- #endif
- #if defined(OS_WIN) || defined(OS_MAC) || \
--    (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   // This creates the DesktopProfileSessionDurationsServices if it didn't exist
-   // already.
-   metrics::DesktopProfileSessionDurationsServiceFactory::GetForBrowserContext(
diff --git a/devel/electron11/files/patch-chrome_browser_password__manager_chrome__password__manager__client.cc b/devel/electron11/files/patch-chrome_browser_password__manager_chrome__password__manager__client.cc
deleted file mode 100644
index 99ab3e68f3af44fec3b0198e1fbd9fb0baff0334..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_password__manager_chrome__password__manager__client.cc
+++ /dev/null
@@ -1,14 +0,0 @@
---- chrome/browser/password_manager/chrome_password_manager_client.cc.orig	2021-01-07 00:36:23 UTC
-+++ chrome/browser/password_manager/chrome_password_manager_client.cc
-@@ -98,7 +98,11 @@
- #include "net/base/url_util.h"
- #include "net/cert/cert_status_flags.h"
- #include "services/metrics/public/cpp/ukm_recorder.h"
-+#if defined(OS_BSD)
-+#include <re2/re2.h>
-+#else
- #include "third_party/re2/src/re2/re2.h"
-+#endif
- #include "url/url_constants.h"
- 
- #if BUILDFLAG(FULL_SAFE_BROWSING)
diff --git a/devel/electron11/files/patch-chrome_browser_pdf_pdf__extension__test.cc b/devel/electron11/files/patch-chrome_browser_pdf_pdf__extension__test.cc
deleted file mode 100644
index ddd330eccea71ac1326b4642b8a871193990cd20..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_pdf_pdf__extension__test.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- chrome/browser/pdf/pdf_extension_test.cc.orig	2021-01-07 00:36:23 UTC
-+++ chrome/browser/pdf/pdf_extension_test.cc
-@@ -2159,7 +2159,7 @@ class PDFExtensionClipboardTest : public PDFExtensionT
-   // Runs `action` and checks the Linux selection clipboard contains `expected`.
-   void DoActionAndCheckSelectionClipboard(base::OnceClosure action,
-                                           const std::string& expected) {
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-     DoActionAndCheckClipboard(std::move(action),
-                               ui::ClipboardBuffer::kSelection, expected);
- #else
diff --git a/devel/electron11/files/patch-chrome_browser_prefs_browser__prefs.cc b/devel/electron11/files/patch-chrome_browser_prefs_browser__prefs.cc
deleted file mode 100644
index 256e92251639958bb59fa93a08812fd1a872b5b9..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_prefs_browser__prefs.cc
+++ /dev/null
@@ -1,20 +0,0 @@
---- chrome/browser/prefs/browser_prefs.cc.orig	2021-01-07 00:36:23 UTC
-+++ chrome/browser/prefs/browser_prefs.cc
-@@ -379,7 +379,7 @@
- #endif
- 
- #if defined(OS_WIN) || defined(OS_MAC) || \
--    (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- #include "chrome/browser/browser_switcher/browser_switcher_prefs.h"
- #endif
- 
-@@ -976,7 +976,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySync
- #endif
- 
- #if defined(OS_WIN) || defined(OS_MAC) || \
--    (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   browser_switcher::BrowserSwitcherPrefs::RegisterProfilePrefs(registry);
- #endif
- 
diff --git a/devel/electron11/files/patch-chrome_browser_prefs_pref__service__incognito__allowlist.cc b/devel/electron11/files/patch-chrome_browser_prefs_pref__service__incognito__allowlist.cc
deleted file mode 100644
index f8a89f6abae2abdd9ff743406c7959ec6556441b..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_prefs_pref__service__incognito__allowlist.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- chrome/browser/prefs/pref_service_incognito_allowlist.cc.orig	2021-01-07 00:36:23 UTC
-+++ chrome/browser/prefs/pref_service_incognito_allowlist.cc
-@@ -135,7 +135,7 @@ const char* const kPersistentPrefNames[] = {
-     prefs::kShowFullscreenToolbar,
- #endif
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if defined(OS_BSD) || (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-     // Toggleing custom frames affects all open windows in the profile, hence
-     // should be written to the regular profile when changed in incognito mode.
-     prefs::kUseCustomChromeFrame,
diff --git a/devel/electron11/files/patch-chrome_browser_printing_print__job__worker.cc b/devel/electron11/files/patch-chrome_browser_printing_print__job__worker.cc
deleted file mode 100644
index fbab9ef32dfd81ae6176fd06e95006c4f0bb9157..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_printing_print__job__worker.cc
+++ /dev/null
@@ -1,20 +0,0 @@
---- chrome/browser/printing/print_job_worker.cc.orig	2021-01-25 11:27:00 UTC
-+++ chrome/browser/printing/print_job_worker.cc
-@@ -223,7 +223,7 @@ void PrintJobWorker::UpdatePrintSettings(base::Value n
-     crash_key = std::make_unique<crash_keys::ScopedPrinterInfo>(
-         print_backend->GetPrinterDriverInfo(printer_name));
- 
--#if defined(OS_LINUX) && defined(USE_CUPS) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && defined(USE_CUPS) && !defined(OS_CHROMEOS)
-     PrinterBasicInfo basic_info;
-     if (print_backend->GetPrinterBasicInfo(printer_name, &basic_info)) {
-       base::Value advanced_settings(base::Value::Type::DICTIONARY);
-@@ -233,7 +233,7 @@ void PrintJobWorker::UpdatePrintSettings(base::Value n
-       new_settings.SetKey(kSettingAdvancedSettings,
-                           std::move(advanced_settings));
-     }
--#endif  // defined(OS_LINUX) && defined(USE_CUPS) && !defined(OS_CHROMEOS)
-+#endif  // (defined(OS_LINUX) || defined(OS_BSD)) && defined(USE_CUPS) && !defined(OS_CHROMEOS)
-   }
- 
-   {
diff --git a/devel/electron11/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc b/devel/electron11/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc
deleted file mode 100644
index 0ee0953d3c834bf83008b0549d7f888872ce921d..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc.orig	2021-01-07 00:36:23 UTC
-+++ chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
-@@ -304,7 +304,7 @@ void ChromeBrowserMainExtraPartsProfiles::
-   media_router::MediaRouterUIServiceFactory::GetInstance();
- #endif
- #if defined(OS_WIN) || defined(OS_MAC) || \
--    (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   metrics::DesktopProfileSessionDurationsServiceFactory::GetInstance();
- #endif
-   ModelTypeStoreServiceFactory::GetInstance();
diff --git a/devel/electron11/files/patch-chrome_browser_themes_theme__service__factory.cc b/devel/electron11/files/patch-chrome_browser_themes_theme__service__factory.cc
deleted file mode 100644
index 95e0ab360d5232fce1ebdebea1856f813147cfa5..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_themes_theme__service__factory.cc
+++ /dev/null
@@ -1,29 +0,0 @@
---- chrome/browser/themes/theme_service_factory.cc.orig	2021-01-07 00:36:24 UTC
-+++ chrome/browser/themes/theme_service_factory.cc
-@@ -22,7 +22,7 @@
- #include "chrome/browser/themes/theme_helper_win.h"
- #endif
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- #include "chrome/browser/themes/theme_service_aura_linux.h"
- #include "ui/views/linux_ui/linux_ui.h"
- #endif
-@@ -77,7 +77,7 @@ ThemeServiceFactory::~ThemeServiceFactory() {}
- 
- KeyedService* ThemeServiceFactory::BuildServiceInstanceFor(
-     content::BrowserContext* profile) const {
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   using ThemeService = ThemeServiceAuraLinux;
- #endif
- 
-@@ -89,7 +89,7 @@ KeyedService* ThemeServiceFactory::BuildServiceInstanc
- 
- void ThemeServiceFactory::RegisterProfilePrefs(
-     user_prefs::PrefRegistrySyncable* registry) {
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   bool default_uses_system_theme = false;
- 
-   const views::LinuxUI* linux_ui = views::LinuxUI::instance();
diff --git a/devel/electron11/files/patch-chrome_browser_ui_browser__command__controller.cc b/devel/electron11/files/patch-chrome_browser_ui_browser__command__controller.cc
deleted file mode 100644
index 763d681ff29ecaeab3adaf43754ff742d35ab997..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_ui_browser__command__controller.cc
+++ /dev/null
@@ -1,38 +0,0 @@
---- chrome/browser/ui/browser_command_controller.cc.orig	2021-01-07 00:36:24 UTC
-+++ chrome/browser/ui/browser_command_controller.cc
-@@ -82,7 +82,7 @@
- #include "components/session_manager/core/session_manager.h"
- #endif
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- #include "ui/base/ime/linux/text_edit_key_bindings_delegate_auralinux.h"
- #endif
- 
-@@ -246,7 +246,7 @@ bool BrowserCommandController::IsReservedCommandOrKey(
- #endif
-   }
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
-   // If this key was registered by the user as a content editing hotkey, then
-   // it is not reserved.
-   ui::TextEditKeyBindingsDelegateAuraLinux* delegate =
-@@ -473,7 +473,7 @@ bool BrowserCommandController::ExecuteCommandWithDispo
-       break;
- #endif
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
-     case IDC_MINIMIZE_WINDOW:
-       browser_->window()->Minimize();
-       break;
-@@ -940,7 +940,7 @@ void BrowserCommandController::InitCommandState() {
-   command_updater_.UpdateCommandEnabled(IDC_VISIT_DESKTOP_OF_LRU_USER_4, true);
-   command_updater_.UpdateCommandEnabled(IDC_VISIT_DESKTOP_OF_LRU_USER_5, true);
- #endif
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
-   command_updater_.UpdateCommandEnabled(IDC_MINIMIZE_WINDOW, true);
-   command_updater_.UpdateCommandEnabled(IDC_MAXIMIZE_WINDOW, true);
-   command_updater_.UpdateCommandEnabled(IDC_RESTORE_WINDOW, true);
diff --git a/devel/electron11/files/patch-chrome_browser_ui_browser__view__prefs.cc b/devel/electron11/files/patch-chrome_browser_ui_browser__view__prefs.cc
deleted file mode 100644
index ee1571500d7400c16e574096fbdf42262838851f..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_ui_browser__view__prefs.cc
+++ /dev/null
@@ -1,24 +0,0 @@
---- chrome/browser/ui/browser_view_prefs.cc.orig	2021-01-07 00:36:24 UTC
-+++ chrome/browser/ui/browser_view_prefs.cc
-@@ -26,7 +26,7 @@ namespace {
- // Old values: 0 = SHRINK (default), 1 = STACKED.
- const char kTabStripLayoutType[] = "tab_strip_layout_type";
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
- bool GetCustomFramePrefDefault() {
- #if defined(USE_OZONE)
-   if (features::IsUsingOzonePlatform()) {
-@@ -51,10 +51,10 @@ void RegisterBrowserViewLocalPrefs(PrefRegistrySimple*
- 
- void RegisterBrowserViewProfilePrefs(
-     user_prefs::PrefRegistrySyncable* registry) {
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
-   registry->RegisterBooleanPref(prefs::kUseCustomChromeFrame,
-                                 GetCustomFramePrefDefault());
--#endif  // defined(OS_LINUX) && defined(!OS_CHROMEOS)
-+#endif  // (defined(OS_LINUX) || defined(OS_BSD)) && defined(!OS_CHROMEOS)
- }
- 
- void MigrateBrowserTabStripPrefs(PrefService* prefs) {
diff --git a/devel/electron11/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc b/devel/electron11/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc
deleted file mode 100644
index 53934853a94616ccba7ebc8d289af39e3c127dba..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- chrome/browser/ui/startup/bad_flags_prompt.cc.orig	2021-01-07 00:36:24 UTC
-+++ chrome/browser/ui/startup/bad_flags_prompt.cc
-@@ -88,7 +88,7 @@ static const char* kBadFlags[] = {
-     extensions::switches::kExtensionsOnChromeURLs,
- #endif
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
-     // Speech dispatcher is buggy, it can crash and it can make Chrome freeze.
-     // http://crbug.com/327295
-     switches::kEnableSpeechDispatcher,
diff --git a/devel/electron11/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc b/devel/electron11/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc
deleted file mode 100644
index 18f54a25d81e8ed50609db752d7dbc76e16410a8..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- chrome/browser/ui/startup/startup_browser_creator.cc.orig	2021-01-07 00:36:24 UTC
-+++ chrome/browser/ui/startup/startup_browser_creator.cc
-@@ -274,7 +274,7 @@ bool CanOpenProfileOnStartup(Profile* profile) {
- // true, send a warning if guest mode is requested but not allowed by policy.
- bool IsGuestModeEnforced(const base::CommandLine& command_line,
-                          bool show_warning) {
--#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN) || \
-+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN) || defined(OS_BSD) || \
-     defined(OS_MAC)
-   PrefService* service = g_browser_process->local_state();
-   DCHECK(service);
diff --git a/devel/electron11/files/patch-chrome_browser_ui_test_test__browser__dialog.cc b/devel/electron11/files/patch-chrome_browser_ui_test_test__browser__dialog.cc
deleted file mode 100644
index 0024c596f3aef2f0399a34d1fbce1faddff947f7..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_ui_test_test__browser__dialog.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- chrome/browser/ui/test/test_browser_dialog.cc.orig	2021-01-07 00:36:24 UTC
-+++ chrome/browser/ui/test/test_browser_dialog.cc
-@@ -114,7 +114,7 @@ bool TestBrowserDialog::VerifyUi() {
- 
-   views::Widget* dialog_widget = *(added.begin());
- // TODO(https://crbug.com/958242) support Mac for pixel tests.
--#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   dialog_widget->SetBlockCloseForTesting(true);
-   // Deactivate before taking screenshot. Deactivated dialog pixel outputs
-   // is more predictable than activated dialog.
diff --git a/devel/electron11/files/patch-chrome_browser_ui_test_test__browser__ui.cc b/devel/electron11/files/patch-chrome_browser_ui_test_test__browser__ui.cc
deleted file mode 100644
index 1b53dab83ebb036676ab42905292ffc9a10618f6..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_ui_test_test__browser__ui.cc
+++ /dev/null
@@ -1,29 +0,0 @@
---- chrome/browser/ui/test/test_browser_ui.cc.orig	2021-01-07 00:36:24 UTC
-+++ chrome/browser/ui/test/test_browser_ui.cc
-@@ -10,7 +10,7 @@
- #include "build/build_config.h"
- 
- #if defined(OS_WIN) || defined(OS_MAC) || \
--    (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- #include "chrome/test/pixel/browser_skia_gold_pixel_diff.h"
- #include "ui/base/test/skia_gold_matching_algorithm.h"
- #include "ui/compositor/test/draw_waiter_for_test.h"
-@@ -32,7 +32,7 @@ std::string NameFromTestCase() {
- }  // namespace
- 
- TestBrowserUi::TestBrowserUi() {
--#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   // Default to fuzzy diff. The magic number is chosen based on
-   // past experiments.
-   SetPixelMatchAlgorithm(
-@@ -43,7 +43,7 @@ TestBrowserUi::TestBrowserUi() {
- TestBrowserUi::~TestBrowserUi() = default;
- 
- // TODO(https://crbug.com/958242) support Mac for pixel tests.
--#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- bool TestBrowserUi::VerifyPixelUi(views::Widget* widget,
-                                   const std::string& screenshot_prefix,
-                                   const std::string& screenshot_name) {
diff --git a/devel/electron11/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc b/devel/electron11/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc
deleted file mode 100644
index 0049a1608f7ca7b58b722cd13bc2c7e224e1643a..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc
+++ /dev/null
@@ -1,38 +0,0 @@
---- chrome/browser/ui/views/chrome_browser_main_extra_parts_views.cc.orig	2021-01-07 00:36:25 UTC
-+++ chrome/browser/ui/views/chrome_browser_main_extra_parts_views.cc
-@@ -34,7 +34,7 @@
- #include "ui/wm/core/wm_state.h"
- #endif  // defined(USE_AURA)
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
- #include <sys/stat.h>
- #include <sys/types.h>
- #include <unistd.h>
-@@ -44,7 +44,7 @@
- #include "chrome/grit/generated_resources.h"
- #include "content/public/common/content_switches.h"
- #include "ui/base/l10n/l10n_util.h"
--#endif  // defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#endif  // (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
- 
- // This connector is used in ui_devtools's TracingAgent to hook up with the
- // tracing service.
-@@ -114,7 +114,7 @@ void ChromeBrowserMainExtraPartsViews::PreProfileInit(
-         return controller;
-       }));
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
-   // On the Linux desktop, we want to prevent the user from logging in as root,
-   // so that we don't destroy the profile. Now that we have some minimal ui
-   // initialized, check to see if we're running as root and bail if we are.
-@@ -145,7 +145,7 @@ void ChromeBrowserMainExtraPartsViews::PreProfileInit(
-   base::RunLoop().RunUntilIdle();
- 
-   exit(EXIT_FAILURE);
--#endif  // defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#endif  // (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
- }
- 
- void ChromeBrowserMainExtraPartsViews::PostBrowserStart() {
diff --git a/devel/electron11/files/patch-chrome_browser_ui_views_chrome__views__delegate.h b/devel/electron11/files/patch-chrome_browser_ui_views_chrome__views__delegate.h
deleted file mode 100644
index 10cd4f9eaa769ef6a16cef35b21bc9359fceaef8..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_ui_views_chrome__views__delegate.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- chrome/browser/ui/views/chrome_views_delegate.h.orig	2021-01-07 00:36:25 UTC
-+++ chrome/browser/ui/views/chrome_views_delegate.h
-@@ -44,7 +44,7 @@ class ChromeViewsDelegate : public views::ViewsDelegat
-   HICON GetSmallWindowIcon() const override;
-   int GetAppbarAutohideEdges(HMONITOR monitor,
-                              base::OnceClosure callback) override;
--#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   gfx::ImageSkia* GetDefaultWindowIcon() const override;
-   bool WindowManagerProvidesTitleBar(bool maximized) override;
- #endif
diff --git a/devel/electron11/files/patch-chrome_browser_ui_views_download_download__item__view.cc b/devel/electron11/files/patch-chrome_browser_ui_views_download_download__item__view.cc
deleted file mode 100644
index fd1bbcb0787eab52feadd3b3a7307be0f287de9d..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_ui_views_download_download__item__view.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- chrome/browser/ui/views/download/download_item_view.cc.orig	2021-01-07 00:36:25 UTC
-+++ chrome/browser/ui/views/download/download_item_view.cc
-@@ -190,7 +190,7 @@ bool UseNewWarnings() {
- }
- 
- int GetFilenameStyle(const views::StyledLabel& label) {
--#if !defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if !defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_BSD)
-   if (UseNewWarnings())
-     return STYLE_EMPHASIZED;
- #endif
diff --git a/devel/electron11/files/patch-chrome_browser_ui_views_first__run__dialog.cc b/devel/electron11/files/patch-chrome_browser_ui_views_first__run__dialog.cc
deleted file mode 100644
index 4a5a43bd0b6b2afb4a1754c0d31f9507554dcfdd..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_ui_views_first__run__dialog.cc
+++ /dev/null
@@ -1,14 +0,0 @@
---- chrome/browser/ui/views/first_run_dialog.cc.orig	2021-01-07 00:36:25 UTC
-+++ chrome/browser/ui/views/first_run_dialog.cc
-@@ -114,9 +114,11 @@ void FirstRunDialog::Done() {
- bool FirstRunDialog::Accept() {
-   GetWidget()->Hide();
- 
-+#if !defined(OS_BSD)
-   ChangeMetricsReportingStateWithReply(
-       report_crashes_->GetChecked(),
-       base::BindRepeating(&InitCrashReporterIfEnabled));
-+#endif
- 
-   if (make_default_->GetChecked())
-     shell_integration::SetAsDefaultBrowser();
diff --git a/devel/electron11/files/patch-chrome_browser_ui_views_frame_browser__frame.cc b/devel/electron11/files/patch-chrome_browser_ui_views_frame_browser__frame.cc
deleted file mode 100644
index 3186f89c113d68635c16d5d1c6a3a015907e4379..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_ui_views_frame_browser__frame.cc
+++ /dev/null
@@ -1,28 +0,0 @@
---- chrome/browser/ui/views/frame/browser_frame.cc.orig	2021-01-07 00:36:25 UTC
-+++ chrome/browser/ui/views/frame/browser_frame.cc
-@@ -38,14 +38,14 @@
- #include "components/user_manager/user_manager.h"
- #endif
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- #include "ui/display/screen.h"
- #endif
- 
- namespace {
- 
- bool IsUsingGtkTheme(Profile* profile) {
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   return ThemeServiceFactory::GetForProfile(profile)->UsingSystemTheme();
- #else
-   return false;
-@@ -204,7 +204,7 @@ const ui::NativeTheme* BrowserFrame::GetNativeTheme() 
- 
- void BrowserFrame::OnNativeWidgetWorkspaceChanged() {
-   chrome::SaveWindowWorkspace(browser_view_->browser(), GetWorkspace());
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   // If the window was sent to a different workspace, prioritize it if
-   // it was sent to the current workspace and deprioritize it
-   // otherwise.  This is done by MoveBrowsersInWorkspaceToFront()
diff --git a/devel/electron11/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc b/devel/electron11/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc
deleted file mode 100644
index e08903662c3a1a75ba60b7a8425ebb6f9d76fb76..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc
+++ /dev/null
@@ -1,20 +0,0 @@
---- chrome/browser/ui/views/frame/browser_non_client_frame_view_factory_views.cc.orig	2021-01-07 00:36:25 UTC
-+++ chrome/browser/ui/views/frame/browser_non_client_frame_view_factory_views.cc
-@@ -13,7 +13,7 @@
- #include "chrome/browser/ui/views/frame/glass_browser_frame_view.h"
- #endif
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- #include "chrome/browser/ui/views/frame/desktop_linux_browser_frame_view.h"
- #include "chrome/browser/ui/views/frame/desktop_linux_browser_frame_view_layout.h"
- #include "ui/views/linux_ui/linux_ui.h"
-@@ -27,7 +27,7 @@ namespace {
- std::unique_ptr<OpaqueBrowserFrameView> CreateOpaqueBrowserFrameView(
-     BrowserFrame* frame,
-     BrowserView* browser_view) {
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   auto* linux_ui = views::LinuxUI::instance();
-   auto* profile = browser_view->browser()->profile();
-   auto* theme_service_factory = ThemeServiceFactory::GetForProfile(profile);
diff --git a/devel/electron11/files/patch-chrome_browser_ui_views_frame_browser__view.cc b/devel/electron11/files/patch-chrome_browser_ui_views_frame_browser__view.cc
deleted file mode 100644
index 5051d88ab9c8ce4d70fb3a376d5a67784ca1cb2a..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_ui_views_frame_browser__view.cc
+++ /dev/null
@@ -1,20 +0,0 @@
---- chrome/browser/ui/views/frame/browser_view.cc.orig	2021-01-07 00:36:25 UTC
-+++ chrome/browser/ui/views/frame/browser_view.cc
-@@ -1474,7 +1474,7 @@ void BrowserView::ToolbarSizeChanged(bool is_animating
- void BrowserView::TabDraggingStatusChanged(bool is_dragging) {
-   // TODO(crbug.com/1110266): Remove explicit OS_CHROMEOS check once OS_LINUX
-   // CrOS cleanup is done.
--#if !defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#if !defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
-   contents_web_view_->SetFastResize(is_dragging);
-   if (!is_dragging) {
-     // When tab dragging is ended, we need to make sure the web contents get
-@@ -1854,7 +1854,7 @@ void BrowserView::UserChangedTheme(BrowserThemeChangeT
-   const bool should_use_native_frame = frame_->ShouldUseNativeFrame();
- 
-   bool must_regenerate_frame;
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   // GTK and user theme changes can both change frame buttons, so the frame
-   // always needs to be regenerated on Linux.
-   must_regenerate_frame = true;
diff --git a/devel/electron11/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc b/devel/electron11/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc
deleted file mode 100644
index 7afa4578f24b94ae67dfa8d4b8fcacab578385d4..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc
+++ /dev/null
@@ -1,29 +0,0 @@
---- chrome/browser/ui/views/frame/system_menu_model_builder.cc.orig	2021-01-07 00:36:25 UTC
-+++ chrome/browser/ui/views/frame/system_menu_model_builder.cc
-@@ -63,7 +63,7 @@ void SystemMenuModelBuilder::BuildMenu(ui::SimpleMenuM
- 
- void SystemMenuModelBuilder::BuildSystemMenuForBrowserWindow(
-     ui::SimpleMenuModel* model) {
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   model->AddItemWithStringId(IDC_MINIMIZE_WINDOW, IDS_MINIMIZE_WINDOW_MENU);
-   model->AddItemWithStringId(IDC_MAXIMIZE_WINDOW, IDS_MAXIMIZE_WINDOW_MENU);
-   model->AddItemWithStringId(IDC_RESTORE_WINDOW, IDS_RESTORE_WINDOW_MENU);
-@@ -78,7 +78,7 @@ void SystemMenuModelBuilder::BuildSystemMenuForBrowser
-     model->AddSeparator(ui::NORMAL_SEPARATOR);
-     model->AddItemWithStringId(IDC_TASK_MANAGER, IDS_TASK_MANAGER);
-   }
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
-   model->AddSeparator(ui::NORMAL_SEPARATOR);
-   model->AddCheckItemWithStringId(IDC_USE_SYSTEM_TITLE_BAR,
-                                   IDS_SHOW_WINDOW_DECORATIONS_MENU);
-@@ -116,7 +116,7 @@ void SystemMenuModelBuilder::BuildSystemMenuForAppOrPo
-     model->AddSeparator(ui::NORMAL_SEPARATOR);
-     model->AddItemWithStringId(IDC_TASK_MANAGER, IDS_TASK_MANAGER);
-   }
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
-   model->AddSeparator(ui::NORMAL_SEPARATOR);
-   model->AddItemWithStringId(IDC_CLOSE_WINDOW, IDS_CLOSE);
- #endif
diff --git a/devel/electron11/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc b/devel/electron11/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc
deleted file mode 100644
index 4b8ea31d3ba8140372ef4908b8c8755c78c3f0c1..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc
+++ /dev/null
@@ -1,29 +0,0 @@
---- chrome/browser/ui/views/frame/system_menu_model_delegate.cc.orig	2021-01-07 00:36:25 UTC
-+++ chrome/browser/ui/views/frame/system_menu_model_delegate.cc
-@@ -15,7 +15,7 @@
- #include "components/sessions/core/tab_restore_service.h"
- #include "ui/base/l10n/l10n_util.h"
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
- #include "chrome/common/pref_names.h"
- #include "components/prefs/pref_service.h"
- #endif
-@@ -30,7 +30,7 @@ SystemMenuModelDelegate::SystemMenuModelDelegate(
- SystemMenuModelDelegate::~SystemMenuModelDelegate() {}
- 
- bool SystemMenuModelDelegate::IsCommandIdChecked(int command_id) const {
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
-   if (command_id == IDC_USE_SYSTEM_TITLE_BAR) {
-     PrefService* prefs = browser_->profile()->GetPrefs();
-     return !prefs->GetBoolean(prefs::kUseCustomChromeFrame);
-@@ -44,7 +44,7 @@ bool SystemMenuModelDelegate::IsCommandIdEnabled(int c
- }
- 
- bool SystemMenuModelDelegate::IsCommandIdVisible(int command_id) const {
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   bool is_maximized = browser_->window()->IsMaximized();
-   switch (command_id) {
-     case IDC_MAXIMIZE_WINDOW:
diff --git a/devel/electron11/files/patch-chrome_browser_ui_views_tabs_new__tab__button.cc b/devel/electron11/files/patch-chrome_browser_ui_views_tabs_new__tab__button.cc
deleted file mode 100644
index ff4697f801a0a8d4459b7f08bc44898ea05f0b3a..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_ui_views_tabs_new__tab__button.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- chrome/browser/ui/views/tabs/new_tab_button.cc.orig	2021-01-07 00:36:25 UTC
-+++ chrome/browser/ui/views/tabs/new_tab_button.cc
-@@ -57,7 +57,7 @@ class NewTabButton::HighlightPathGenerator
- NewTabButton::NewTabButton(TabStrip* tab_strip, PressedCallback callback)
-     : views::ImageButton(std::move(callback)), tab_strip_(tab_strip) {
-   SetAnimateOnStateChange(true);
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   SetTriggerableEventFlags(GetTriggerableEventFlags() |
-                            ui::EF_MIDDLE_MOUSE_BUTTON);
- #endif
diff --git a/devel/electron11/files/patch-chrome_browser_ui_views_web__apps_pwa__confirmation__bubble__view.cc b/devel/electron11/files/patch-chrome_browser_ui_views_web__apps_pwa__confirmation__bubble__view.cc
deleted file mode 100644
index ca08e7cd9b91c73883dd1fffcc3530238dad0ae3..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_ui_views_web__apps_pwa__confirmation__bubble__view.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- chrome/browser/ui/views/web_apps/pwa_confirmation_bubble_view.cc.orig	2021-01-07 00:36:25 UTC
-+++ chrome/browser/ui/views/web_apps/pwa_confirmation_bubble_view.cc
-@@ -34,7 +34,7 @@
- 
- namespace {
- 
--#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
-+#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD) || \
-     defined(OS_CHROMEOS)
- constexpr char kDeviceTypeForCheckbox[] = "computer";
- #else
diff --git a/devel/electron11/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc b/devel/electron11/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc
deleted file mode 100644
index 5cb814e93c00d5854b447e120febfa44834d367c..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc
+++ /dev/null
@@ -1,20 +0,0 @@
---- chrome/browser/ui/webui/settings/appearance_handler.cc.orig	2021-01-07 00:36:25 UTC
-+++ chrome/browser/ui/webui/settings/appearance_handler.cc
-@@ -27,7 +27,7 @@ void AppearanceHandler::RegisterMessages() {
-       "useDefaultTheme",
-       base::BindRepeating(&AppearanceHandler::HandleUseDefaultTheme,
-                           base::Unretained(this)));
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if defined(OS_LINUX) || defined(OS_BSD) && !defined(OS_CHROMEOS)
-   web_ui()->RegisterMessageCallback(
-       "useSystemTheme",
-       base::BindRepeating(&AppearanceHandler::HandleUseSystemTheme,
-@@ -39,7 +39,7 @@ void AppearanceHandler::HandleUseDefaultTheme(const ba
-   ThemeServiceFactory::GetForProfile(profile_)->UseDefaultTheme();
- }
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if defined(OS_LINUX) || defined(OS_BSD) && !defined(OS_CHROMEOS)
- void AppearanceHandler::HandleUseSystemTheme(const base::ListValue* args) {
-   if (profile_->IsSupervised())
-     NOTREACHED();
diff --git a/devel/electron11/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h b/devel/electron11/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h
deleted file mode 100644
index 9b03572a18e3bf20a8557710aaee6dc6a8b7b34e..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- chrome/browser/ui/webui/settings/appearance_handler.h.orig	2021-01-07 00:36:25 UTC
-+++ chrome/browser/ui/webui/settings/appearance_handler.h
-@@ -36,7 +36,7 @@ class AppearanceHandler : public SettingsPageUIHandler
-   // Changes the UI theme of the browser to the default theme.
-   void HandleUseDefaultTheme(const base::ListValue* args);
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
-   // Changes the UI theme of the browser to the system (GTK+) theme.
-   void HandleUseSystemTheme(const base::ListValue* args);
- #endif
diff --git a/devel/electron11/files/patch-chrome_browser_ui_webui_settings_settings__localized__strings__provider.cc b/devel/electron11/files/patch-chrome_browser_ui_webui_settings_settings__localized__strings__provider.cc
deleted file mode 100644
index 3b6a509d3835d3b51149226ca63e6ed304bb8288..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_ui_webui_settings_settings__localized__strings__provider.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc.orig	2021-01-07 00:36:25 UTC
-+++ chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
-@@ -335,7 +335,7 @@ void AddAppearanceStrings(content::WebUIDataSource* ht
-     {"minimumFont", IDS_SETTINGS_MINIMUM_FONT_SIZE_LABEL},
-     {"tiny", IDS_SETTINGS_TINY_FONT_SIZE},
-     {"huge", IDS_SETTINGS_HUGE_FONT_SIZE},
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-     {"systemTheme", IDS_SETTINGS_SYSTEM_THEME},
-     {"useSystemTheme", IDS_SETTINGS_USE_SYSTEM_THEME},
-     {"classicTheme", IDS_SETTINGS_CLASSIC_THEME},
diff --git a/devel/electron11/files/patch-chrome_browser_web__applications_extensions_bookmark__app__finalizer__utils.cc b/devel/electron11/files/patch-chrome_browser_web__applications_extensions_bookmark__app__finalizer__utils.cc
deleted file mode 100644
index e42254f4d916aae9a3f55939a8fe16bdc54eb1fe..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_browser_web__applications_extensions_bookmark__app__finalizer__utils.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- chrome/browser/web_applications/extensions/bookmark_app_finalizer_utils.cc.orig	2021-01-07 00:36:25 UTC
-+++ chrome/browser/web_applications/extensions/bookmark_app_finalizer_utils.cc
-@@ -15,7 +15,7 @@ namespace {
- 
- #if !defined(OS_CHROMEOS)
- bool CanOsAddDesktopShortcuts() {
--#if defined(OS_LINUX) || defined(OS_WIN)
-+#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
-   return true;
- #else
-   return false;
diff --git a/devel/electron11/files/patch-chrome_common_channel__info.h b/devel/electron11/files/patch-chrome_common_channel__info.h
deleted file mode 100644
index 4ff35399e3e3a8261fccc983a027159d8b4b93cb..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_common_channel__info.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- chrome/common/channel_info.h.orig	2021-01-07 00:36:25 UTC
-+++ chrome/common/channel_info.h
-@@ -61,7 +61,7 @@ bool IsSideBySideCapable();
- std::string GetChannelSuffixForDataDir();
- #endif
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- // Returns the channel-specific filename of the desktop shortcut used to launch
- // the browser.
- std::string GetDesktopName(base::Environment* env);
diff --git a/devel/electron11/files/patch-chrome_common_channel__info__posix.cc b/devel/electron11/files/patch-chrome_common_channel__info__posix.cc
deleted file mode 100644
index cddef41ef5e75be1bfa2ea6cea844533f19178e5..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_common_channel__info__posix.cc
+++ /dev/null
@@ -1,20 +0,0 @@
---- chrome/common/channel_info_posix.cc.orig	2021-01-07 00:36:25 UTC
-+++ chrome/common/channel_info_posix.cc
-@@ -67,7 +67,7 @@ std::string GetChannelSuffixForDataDir() {
-   }
- }
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- std::string GetDesktopName(base::Environment* env) {
- #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
-   // Google Chrome packaged as a snap is a special case: the application name
-@@ -96,7 +96,7 @@ std::string GetDesktopName(base::Environment* env) {
-   return "chromium-browser.desktop";
- #endif
- }
--#endif  // defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#endif  // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- 
- version_info::Channel GetChannel() {
-   return GetChannelImpl(nullptr);
diff --git a/devel/electron11/files/patch-chrome_common_extensions_command.cc b/devel/electron11/files/patch-chrome_common_extensions_command.cc
deleted file mode 100644
index a10851c0752d8d63797ebb89ca404a97b28f2c9c..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_common_extensions_command.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- chrome/common/extensions/command.cc.orig	2021-01-07 00:36:25 UTC
-+++ chrome/common/extensions/command.cc
-@@ -293,7 +293,7 @@ std::string Command::CommandPlatform() {
-   return values::kKeybindingPlatformMac;
- #elif defined(OS_CHROMEOS)
-   return values::kKeybindingPlatformChromeOs;
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
-   return values::kKeybindingPlatformLinux;
- #else
-   return "";
diff --git a/devel/electron11/files/patch-chrome_common_webui__url__constants.h b/devel/electron11/files/patch-chrome_common_webui__url__constants.h
deleted file mode 100644
index 76589a21ab10b4a99d2e04d4fa01cfb24d002127..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_common_webui__url__constants.h
+++ /dev/null
@@ -1,33 +0,0 @@
---- chrome/common/webui_url_constants.h.orig	2021-01-07 00:36:26 UTC
-+++ chrome/common/webui_url_constants.h
-@@ -291,7 +291,7 @@ bool IsSystemWebUIHost(base::StringPiece host);
- 
- #endif  // defined(OS_CHROMEOS)
- 
--#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
-+#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD) || \
-     defined(OS_CHROMEOS)
- extern const char kChromeUIDiscardsHost[];
- extern const char kChromeUIDiscardsURL[];
-@@ -311,18 +311,18 @@ extern const char kChromeUINearbyShareURL[];
- extern const char kChromeUILinuxProxyConfigHost[];
- #endif
- 
--#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
-+#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) || \
-     defined(OS_ANDROID)
- extern const char kChromeUISandboxHost[];
- #endif
- 
- #if defined(OS_WIN) || defined(OS_MAC) || \
--    (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- extern const char kChromeUIBrowserSwitchHost[];
- extern const char kChromeUIBrowserSwitchURL[];
- #endif
- 
--#if ((defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(TOOLKIT_VIEWS)) || \
-+#if ((defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && defined(TOOLKIT_VIEWS)) || \
-     defined(USE_AURA)
- extern const char kChromeUITabModalConfirmDialogHost[];
- #endif
diff --git a/devel/electron11/files/patch-chrome_test_base_chrome__test__launcher.cc b/devel/electron11/files/patch-chrome_test_base_chrome__test__launcher.cc
deleted file mode 100644
index f3c0568a2b83b4adc8c581dc51ade863d10eb1a9..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_test_base_chrome__test__launcher.cc
+++ /dev/null
@@ -1,38 +0,0 @@
---- chrome/test/base/chrome_test_launcher.cc.orig	2021-01-07 00:36:26 UTC
-+++ chrome/test/base/chrome_test_launcher.cc
-@@ -61,7 +61,7 @@
- #endif
- 
- #if defined(OS_WIN) || defined(OS_MAC) || \
--    (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- #include "chrome/browser/first_run/scoped_relaunch_chrome_browser_override.h"
- #include "chrome/browser/upgrade_detector/installed_version_poller.h"
- #include "testing/gtest/include/gtest/gtest.h"
-@@ -79,7 +79,7 @@ int ChromeTestSuiteRunner::RunTestSuite(int argc, char
-   content::ContentTestSuiteBase::RegisterInProcessThreads();
- #endif
- #if defined(OS_WIN) || defined(OS_MAC) || \
--    (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   InstalledVersionPoller::ScopedDisableForTesting disable_polling(
-       InstalledVersionPoller::MakeScopedDisableForTesting());
- #endif
-@@ -201,7 +201,7 @@ int LaunchChromeTests(size_t parallel_jobs,
-   if (command_line.HasSwitch(switches::kLaunchAsBrowser))
-     sampling_profiler = std::make_unique<MainThreadStackSamplingProfiler>();
- 
--#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
-+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
-   ChromeCrashReporterClient::Create();
- #elif defined(OS_WIN)
-   // We leak this pointer intentionally. The crash client needs to outlive
-@@ -229,7 +229,7 @@ int LaunchChromeTests(size_t parallel_jobs,
-   }
- 
- #if defined(OS_WIN) || defined(OS_MAC) || \
--    (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   // Cause a test failure for any test that triggers an unexpected relaunch.
-   // Tests that fail here should likely be restructured to put the "before
-   // relaunch" code into a PRE_ test with its own
diff --git a/devel/electron11/files/patch-chrome_test_base_interactive__ui__tests__main.cc b/devel/electron11/files/patch-chrome_test_base_interactive__ui__tests__main.cc
deleted file mode 100644
index 68d0079db76c44862d90888f248efb7ab462287b..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_test_base_interactive__ui__tests__main.cc
+++ /dev/null
@@ -1,20 +0,0 @@
---- chrome/test/base/interactive_ui_tests_main.cc.orig	2021-01-07 00:36:26 UTC
-+++ chrome/test/base/interactive_ui_tests_main.cc
-@@ -16,7 +16,7 @@
- #if defined(USE_AURA)
- #include "ui/aura/test/ui_controls_factory_aura.h"
- #include "ui/base/test/ui_controls_aura.h"
--#if defined(USE_OZONE) && defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if defined(USE_OZONE) && ((defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD))
- #include "ui/base/ui_base_features.h"
- #include "ui/ozone/public/ozone_platform.h"
- #endif
-@@ -53,7 +53,7 @@ class InteractiveUITestSuite : public ChromeTestSuite 
-     com_initializer_.reset(new base::win::ScopedCOMInitializer());
-     ui_controls::InstallUIControlsAura(
-         aura::test::CreateUIControlsAura(nullptr));
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
- #if defined(USE_OZONE)
-     if (features::IsUsingOzonePlatform()) {
-       ui::OzonePlatform::InitParams params;
diff --git a/devel/electron11/files/patch-chrome_test_base_test__browser__window.h b/devel/electron11/files/patch-chrome_test_base_test__browser__window.h
deleted file mode 100644
index 4e7d02309f639a42732b2271afc234b13ab30fe7..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_test_base_test__browser__window.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- chrome/test/base/test_browser_window.h.orig	2021-01-07 00:36:26 UTC
-+++ chrome/test/base/test_browser_window.h
-@@ -179,7 +179,7 @@ class TestBrowserWindow : public BrowserWindow {
-       bool is_source_keyboard) override {}
- 
- #if defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_WIN) || \
--    defined(OS_LINUX)
-+    defined(OS_LINUX) || defined(OS_BSD)
-   void ShowHatsBubble(const std::string& site_id) override {}
- #endif
- 
diff --git a/devel/electron11/files/patch-chrome_test_base_testing__browser__process.h b/devel/electron11/files/patch-chrome_test_base_testing__browser__process.h
deleted file mode 100644
index 8de288fcb17cf7e34ba1749eb178352b642f580d..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-chrome_test_base_testing__browser__process.h
+++ /dev/null
@@ -1,13 +0,0 @@
---- chrome/test/base/testing_browser_process.h.orig	2021-01-07 00:36:26 UTC
-+++ chrome/test/base/testing_browser_process.h
-@@ -124,8 +124,8 @@ class TestingBrowserProcess : public BrowserProcess {
-   DownloadRequestLimiter* download_request_limiter() override;
-   StartupData* startup_data() override;
- 
--#if (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
--  void StartAutoupdateTimer() override {}
-+#if (defined(OS_WIN) || defined(OS_LINUX) || defined(OS_FREEBSD)) && !defined(OS_CHROMEOS)
-+  void StartAutoupdateTimer() /*override*/ {}
- #endif
- 
-   component_updater::ComponentUpdateService* component_updater() override;
diff --git a/devel/electron11/files/patch-components_autofill_core_browser_personal__data__manager.cc b/devel/electron11/files/patch-components_autofill_core_browser_personal__data__manager.cc
deleted file mode 100644
index 0f3196edc8273151ff84be28f9dcf1332eded6ce..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-components_autofill_core_browser_personal__data__manager.cc
+++ /dev/null
@@ -1,20 +0,0 @@
---- components/autofill/core/browser/personal_data_manager.cc.orig	2021-01-07 00:36:29 UTC
-+++ components/autofill/core/browser/personal_data_manager.cc
-@@ -1960,7 +1960,7 @@ bool PersonalDataManager::IsServerCard(const CreditCar
- 
- bool PersonalDataManager::ShouldShowCardsFromAccountOption() const {
- // The feature is only for Linux, Windows and Mac.
--#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_WIN) || \
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_WIN) || defined(OS_BSD) || \
-     defined(OS_APPLE)
-   // This option should only be shown for users that have not enabled the Sync
-   // Feature and that have server credit cards available.
-@@ -1984,7 +1984,7 @@ bool PersonalDataManager::ShouldShowCardsFromAccountOp
-   return !is_opted_in;
- #else
-   return false;
--#endif // #if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_WIN) || \
-+#endif // #if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_WIN) || defined(OS_BSD) || \
-        //     defined(OS_APPLE)
- }
- 
diff --git a/devel/electron11/files/patch-components_autofill_core_common_autofill__payments__features.cc b/devel/electron11/files/patch-components_autofill_core_common_autofill__payments__features.cc
deleted file mode 100644
index 5026f0f0ac5b3d001354b93031ee627af44b0f6d..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-components_autofill_core_common_autofill__payments__features.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- components/autofill/core/common/autofill_payments_features.cc.orig	2021-01-07 00:36:29 UTC
-+++ components/autofill/core/common/autofill_payments_features.cc
-@@ -123,7 +123,7 @@ const base::Feature kAutofillUpstreamAllowAllEmailDoma
- 
- bool ShouldShowImprovedUserConsentForCreditCardSave() {
- #if defined(OS_WIN) || defined(OS_APPLE) || \
--    (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   // The new user consent UI is fully launched on MacOS, Windows and Linux.
-   return true;
- #else
diff --git a/devel/electron11/files/patch-components_content__settings_core_browser_website__settings__registry.cc b/devel/electron11/files/patch-components_content__settings_core_browser_website__settings__registry.cc
deleted file mode 100644
index 1cc2267366c03ad3559ae7b3b0cf933746d8e115..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-components_content__settings_core_browser_website__settings__registry.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- components/content_settings/core/browser/website_settings_registry.cc.orig	2021-01-07 00:36:29 UTC
-+++ components/content_settings/core/browser/website_settings_registry.cc
-@@ -66,7 +66,7 @@ const WebsiteSettingsInfo* WebsiteSettingsRegistry::Re
- #if defined(OS_WIN)
-   if (!(platform & PLATFORM_WINDOWS))
-     return nullptr;
--#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#elif (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
-   if (!(platform & PLATFORM_LINUX))
-     return nullptr;
- #elif defined(OS_MAC)
diff --git a/devel/electron11/files/patch-components_crash_content_browser_BUILD.gn b/devel/electron11/files/patch-components_crash_content_browser_BUILD.gn
deleted file mode 100644
index 6a5aba3eededaa83315778425ba5f8b659243ecb..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-components_crash_content_browser_BUILD.gn
+++ /dev/null
@@ -1,27 +0,0 @@
---- components/crash/content/browser/BUILD.gn.orig	2021-01-07 00:36:29 UTC
-+++ components/crash/content/browser/BUILD.gn
-@@ -35,7 +35,7 @@ source_set("browser") {
-     "//content/public/common",
-   ]
- 
--  if (is_linux || is_chromeos || is_android) {
-+  if ((is_linux || is_chromeos || is_android) && !is_bsd) {
-     set_sources_assignment_filter([])
- 
-     # Want this file on both Linux and Android.
-@@ -49,13 +49,13 @@ source_set("browser") {
-     deps += [ "//third_party/crashpad/crashpad/client" ]
-   }
- 
--  if (!is_android) {
-+  if (!is_android && !is_bsd) {
-     deps += [ "//third_party/breakpad:client" ]
-   }
- 
-   # This is not in the GYP build but this target includes breakpad client
-   # headers, so add the dependency here.
--  if ((is_posix && !is_ios) || is_fuchsia) {
-+  if ((is_posix && !is_ios && !is_bsd) || is_fuchsia) {
-     configs += [ "//third_party/breakpad:client_config" ]
-     public_configs = [ "//third_party/breakpad:client_config" ]
-   }
diff --git a/devel/electron11/files/patch-components_flags__ui_flags__state.cc b/devel/electron11/files/patch-components_flags__ui_flags__state.cc
deleted file mode 100644
index 655ade0cedac8ae52183af72af064c9b2fcf1a1f..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-components_flags__ui_flags__state.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- components/flags_ui/flags_state.cc.orig	2021-01-07 00:36:29 UTC
-+++ components/flags_ui/flags_state.cc
-@@ -687,7 +687,7 @@ int FlagsState::GetCurrentPlatform() {
-   return kOsWin;
- #elif defined(OS_CHROMEOS)
-   return kOsCrOS;
--#elif defined(OS_LINUX) || defined(OS_OPENBSD)
-+#elif defined(OS_LINUX) || defined(OS_OPENBSD) || defined(OS_FREEBSD)
-   return kOsLinux;
- #elif defined(OS_ANDROID)
-   return kOsAndroid;
diff --git a/devel/electron11/files/patch-components_os__crypt_os__crypt.h b/devel/electron11/files/patch-components_os__crypt_os__crypt.h
deleted file mode 100644
index 5f3cfc6a12f6391f827373694f66757f8de47359..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-components_os__crypt_os__crypt.h
+++ /dev/null
@@ -1,48 +0,0 @@
---- components/os_crypt/os_crypt.h.orig	2021-01-07 00:36:30 UTC
-+++ components/os_crypt/os_crypt.h
-@@ -15,9 +15,9 @@
- #include "base/strings/string16.h"
- #include "build/build_config.h"
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- class KeyStorageLinux;
--#endif  // defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#endif  // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- 
- #if defined(OS_WIN) || defined(OS_MAC)
- class PrefRegistrySimple;
-@@ -34,13 +34,13 @@ struct Config;
- // true for Linux, if a password management tool is available.
- class OSCrypt {
-  public:
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   // Set the configuration of OSCrypt.
-   static COMPONENT_EXPORT(OS_CRYPT) void SetConfig(
-       std::unique_ptr<os_crypt::Config> config);
--#endif  // defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#endif  // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- 
--#if defined(OS_APPLE) || (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+#if defined(OS_APPLE) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   // On Linux returns true iff the real secret key (not hardcoded one) is
-   // available. On MacOS returns true if Keychain is available (for mock
-   // Keychain it returns true if not using locked Keychain, false if using
-@@ -131,7 +131,7 @@ class OSCrypt {
-   DISALLOW_IMPLICIT_CONSTRUCTORS(OSCrypt);
- };
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- // For unit testing purposes, inject methods to be used.
- // |get_key_storage_mock| provides the desired |KeyStorage| implementation.
- // If the provider returns |nullptr|, a hardcoded password will be used.
-@@ -146,6 +146,6 @@ void UseMockKeyStorageForTesting(
- // Clears any caching and most lazy initialisations performed by the production
- // code. Should be used after any test which required a password.
- COMPONENT_EXPORT(OS_CRYPT) void ClearCacheForTesting();
--#endif  // defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#endif  // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- 
- #endif  // COMPONENTS_OS_CRYPT_OS_CRYPT_H_
diff --git a/devel/electron11/files/patch-components_os__crypt_os__crypt__unittest.cc b/devel/electron11/files/patch-components_os__crypt_os__crypt__unittest.cc
deleted file mode 100644
index 7f2433204d081c5a36d13ccf621b970d1533cb1a..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-components_os__crypt_os__crypt__unittest.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- components/os_crypt/os_crypt_unittest.cc.orig	2021-01-07 00:36:30 UTC
-+++ components/os_crypt/os_crypt_unittest.cc
-@@ -18,7 +18,7 @@
- #include "components/os_crypt/os_crypt_mocker.h"
- #include "testing/gtest/include/gtest/gtest.h"
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
- #include "components/os_crypt/os_crypt_mocker_linux.h"
- #endif
- 
diff --git a/devel/electron11/files/patch-components_policy_core_common_cloud_cloud__policy__util.cc b/devel/electron11/files/patch-components_policy_core_common_cloud_cloud__policy__util.cc
deleted file mode 100644
index 13dda2ba7d774b575d345bc9620227cb1f89fb20..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-components_policy_core_common_cloud_cloud__policy__util.cc
+++ /dev/null
@@ -1,20 +0,0 @@
---- components/policy/core/common/cloud/cloud_policy_util.cc.orig	2021-01-07 00:36:30 UTC
-+++ components/policy/core/common/cloud/cloud_policy_util.cc
-@@ -32,7 +32,7 @@
- #import <SystemConfiguration/SCDynamicStoreCopySpecific.h>
- #endif
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- #include <limits.h>  // For HOST_NAME_MAX
- #endif
- 
-@@ -66,7 +66,7 @@
- #include "base/system/sys_info.h"
- #endif
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- #include "base/system/sys_info.h"
- #endif
- 
diff --git a/devel/electron11/files/patch-components_viz_common_features.cc b/devel/electron11/files/patch-components_viz_common_features.cc
deleted file mode 100644
index d353022b254758e702318d3d11e49131f71f170b..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-components_viz_common_features.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- components/viz/common/features.cc.orig	2021-01-07 00:36:32 UTC
-+++ components/viz/common/features.cc
-@@ -22,7 +22,7 @@ const base::Feature kForcePreferredIntervalForVideo{
- 
- // Use the SkiaRenderer.
- #if defined(OS_WIN) || \
--    (defined(OS_LINUX) && !(defined(OS_CHROMEOS) || BUILDFLAG(IS_CHROMECAST)))
-+    (defined(OS_LINUX) && !(defined(OS_CHROMEOS) || BUILDFLAG(IS_CHROMECAST))) || defined(OS_BSD)
- const base::Feature kUseSkiaRenderer{"UseSkiaRenderer",
-                                      base::FEATURE_ENABLED_BY_DEFAULT};
- #else
diff --git a/devel/electron11/files/patch-components_viz_host_host__display__client.cc b/devel/electron11/files/patch-components_viz_host_host__display__client.cc
deleted file mode 100644
index 4681c967d1f441d50e37876c4b1b984dbbafbb6e..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-components_viz_host_host__display__client.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- components/viz/host/host_display_client.cc.orig	2021-01-25 11:27:00 UTC
-+++ components/viz/host/host_display_client.cc
-@@ -64,7 +64,7 @@ void HostDisplayClient::CreateLayeredWindowUpdater(
- #endif
- }
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- void HostDisplayClient::DidCompleteSwapWithNewSize(const gfx::Size& size) {
-   NOTIMPLEMENTED();
- }
diff --git a/devel/electron11/files/patch-components_viz_host_host__display__client.h b/devel/electron11/files/patch-components_viz_host_host__display__client.h
deleted file mode 100644
index cf4eae4542d140c1705c4c792ef93178819f1daf..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-components_viz_host_host__display__client.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- components/viz/host/host_display_client.h.orig	2021-01-25 11:27:00 UTC
-+++ components/viz/host/host_display_client.h
-@@ -43,7 +43,7 @@ class VIZ_HOST_EXPORT HostDisplayClient : public mojom
-   void CreateLayeredWindowUpdater(
-       mojo::PendingReceiver<mojom::LayeredWindowUpdater> receiver) override;
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   void DidCompleteSwapWithNewSize(const gfx::Size& size) override;
- #endif
- 
diff --git a/devel/electron11/files/patch-components_viz_service_display__embedder_software__output__surface.cc b/devel/electron11/files/patch-components_viz_service_display__embedder_software__output__surface.cc
deleted file mode 100644
index d5f47e19dad2aa9fd6d274f422501040d732f218..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-components_viz_service_display__embedder_software__output__surface.cc
+++ /dev/null
@@ -1,20 +0,0 @@
---- components/viz/service/display_embedder/software_output_surface.cc.orig	2021-01-07 00:36:32 UTC
-+++ components/viz/service/display_embedder/software_output_surface.cc
-@@ -112,7 +112,7 @@ void SoftwareOutputSurface::SwapBuffersCallback(base::
-   base::TimeTicks now = base::TimeTicks::Now();
-   base::TimeDelta interval_to_next_refresh =
-       now.SnappedToNextTick(refresh_timebase_, refresh_interval_) - now;
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   if (needs_swap_size_notifications_)
-     client_->DidSwapWithSize(pixel_size);
- #endif
-@@ -141,7 +141,7 @@ gfx::OverlayTransform SoftwareOutputSurface::GetDispla
-   return gfx::OVERLAY_TRANSFORM_NONE;
- }
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- void SoftwareOutputSurface::SetNeedsSwapSizeNotifications(
-     bool needs_swap_size_notifications) {
-   needs_swap_size_notifications_ = needs_swap_size_notifications;
diff --git a/devel/electron11/files/patch-components_viz_service_display__embedder_software__output__surface.h b/devel/electron11/files/patch-components_viz_service_display__embedder_software__output__surface.h
deleted file mode 100644
index 30ed385710315f14850c561be95f800645411884..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-components_viz_service_display__embedder_software__output__surface.h
+++ /dev/null
@@ -1,20 +0,0 @@
---- components/viz/service/display_embedder/software_output_surface.h.orig	2021-01-07 00:36:32 UTC
-+++ components/viz/service/display_embedder/software_output_surface.h
-@@ -48,7 +48,7 @@ class VIZ_SERVICE_EXPORT SoftwareOutputSurface : publi
-       UpdateVSyncParametersCallback callback) override;
-   void SetDisplayTransformHint(gfx::OverlayTransform transform) override {}
-   gfx::OverlayTransform GetDisplayTransform() override;
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   void SetNeedsSwapSizeNotifications(
-       bool needs_swap_size_notifications) override;
- #endif
-@@ -71,7 +71,7 @@ class VIZ_SERVICE_EXPORT SoftwareOutputSurface : publi
-   std::queue<std::vector<ui::LatencyInfo>> stored_latency_info_;
-   ui::LatencyTracker latency_tracker_;
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   bool needs_swap_size_notifications_ = false;
- #endif
- 
diff --git a/devel/electron11/files/patch-components_viz_service_frame__sinks_root__compositor__frame__sink__impl.cc b/devel/electron11/files/patch-components_viz_service_frame__sinks_root__compositor__frame__sink__impl.cc
deleted file mode 100644
index d89064f2b0d813f9d678790632346f0f30f7b184..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-components_viz_service_frame__sinks_root__compositor__frame__sink__impl.cc
+++ /dev/null
@@ -1,20 +0,0 @@
---- components/viz/service/frame_sinks/root_compositor_frame_sink_impl.cc.orig	2021-01-07 00:36:32 UTC
-+++ components/viz/service/frame_sinks/root_compositor_frame_sink_impl.cc
-@@ -54,7 +54,7 @@ RootCompositorFrameSinkImpl::Create(
-   output_surface->SetNeedsSwapSizeNotifications(
-       params->send_swap_size_notifications);
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   // For X11, we need notify client about swap completion after resizing, so the
-   // client can use it for synchronize with X11 WM.
-   output_surface->SetNeedsSwapSizeNotifications(true);
-@@ -456,7 +456,7 @@ void RootCompositorFrameSinkImpl::DisplayDidCompleteSw
- #if defined(OS_ANDROID)
-   if (display_client_)
-     display_client_->DidCompleteSwapWithSize(pixel_size);
--#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   if (display_client_ && pixel_size != last_swap_pixel_size_) {
-     last_swap_pixel_size_ = pixel_size;
-     display_client_->DidCompleteSwapWithNewSize(last_swap_pixel_size_);
diff --git a/devel/electron11/files/patch-components_viz_service_frame__sinks_root__compositor__frame__sink__impl.h b/devel/electron11/files/patch-components_viz_service_frame__sinks_root__compositor__frame__sink__impl.h
deleted file mode 100644
index 0d918ba145909081aae9cf4b96dd77778865b9ae..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-components_viz_service_frame__sinks_root__compositor__frame__sink__impl.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- components/viz/service/frame_sinks/root_compositor_frame_sink_impl.h.orig	2021-01-07 00:36:32 UTC
-+++ components/viz/service/frame_sinks/root_compositor_frame_sink_impl.h
-@@ -163,7 +163,7 @@ class RootCompositorFrameSinkImpl : public mojom::Comp
-   base::TimeDelta preferred_frame_interval_ =
-       FrameRateDecider::UnspecifiedFrameInterval();
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   gfx::Size last_swap_pixel_size_;
- #endif
- 
diff --git a/devel/electron11/files/patch-components_viz_test_fake__output__surface.cc b/devel/electron11/files/patch-components_viz_test_fake__output__surface.cc
deleted file mode 100644
index 56d7280c8fe13c798e0d06b3eb52718ea3c04ec3..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-components_viz_test_fake__output__surface.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- components/viz/test/fake_output_surface.cc.orig	2021-01-07 00:36:32 UTC
-+++ components/viz/test/fake_output_surface.cc
-@@ -115,7 +115,7 @@ gfx::OverlayTransform FakeOutputSurface::GetDisplayTra
-                                          : gfx::OVERLAY_TRANSFORM_NONE;
- }
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- void FakeOutputSurface::SetNeedsSwapSizeNotifications(
-     bool needs_swap_size_notifications) {}
- #endif
diff --git a/devel/electron11/files/patch-components_viz_test_fake__output__surface.h b/devel/electron11/files/patch-components_viz_test_fake__output__surface.h
deleted file mode 100644
index ee666fe92bd5f80b14688503bcc21e90e3326418..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-components_viz_test_fake__output__surface.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- components/viz/test/fake_output_surface.h.orig	2021-01-07 00:36:32 UTC
-+++ components/viz/test/fake_output_surface.h
-@@ -86,7 +86,7 @@ class FakeOutputSurface : public OutputSurface {
-       UpdateVSyncParametersCallback callback) override;
-   void SetDisplayTransformHint(gfx::OverlayTransform transform) override;
-   gfx::OverlayTransform GetDisplayTransform() override;
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   void SetNeedsSwapSizeNotifications(
-       bool needs_swap_size_notifications) override;
- #endif
diff --git a/devel/electron11/files/patch-components_viz_test_mock__display__client.h b/devel/electron11/files/patch-components_viz_test_mock__display__client.h
deleted file mode 100644
index 72740f0654376a3780bc302ac5205103a2f5d6c0..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-components_viz_test_mock__display__client.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- components/viz/test/mock_display_client.h.orig	2021-01-07 00:36:32 UTC
-+++ components/viz/test/mock_display_client.h
-@@ -36,7 +36,7 @@ class MockDisplayClient : public mojom::DisplayClient 
-   MOCK_METHOD1(SetWideColorEnabled, void(bool enabled));
-   MOCK_METHOD1(SetPreferredRefreshRate, void(float refresh_rate));
- #endif
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   MOCK_METHOD1(DidCompleteSwapWithNewSize, void(const gfx::Size&));
- #endif
- 
diff --git a/devel/electron11/files/patch-content_browser_compositor_viz__process__transport__factory.cc b/devel/electron11/files/patch-content_browser_compositor_viz__process__transport__factory.cc
deleted file mode 100644
index 6d8c39dd19ced8403075e757a41c6d8d0b263b4f..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-content_browser_compositor_viz__process__transport__factory.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- content/browser/compositor/viz_process_transport_factory.cc.orig	2021-01-25 11:27:00 UTC
-+++ content/browser/compositor/viz_process_transport_factory.cc
-@@ -108,7 +108,7 @@ class HostDisplayClient : public viz::HostDisplayClien
-   HostDisplayClient& operator=(const HostDisplayClient&) = delete;
- 
-   // viz::HostDisplayClient:
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   void DidCompleteSwapWithNewSize(const gfx::Size& size) override {
-     compositor_->OnCompleteSwapWithNewSize(size);
-   }
diff --git a/devel/electron11/files/patch-content_browser_devtools_protocol_system__info__handler.cc b/devel/electron11/files/patch-content_browser_devtools_protocol_system__info__handler.cc
deleted file mode 100644
index 9a1ba5207d58aa652e46bbad1e2716d1ac9697e9..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-content_browser_devtools_protocol_system__info__handler.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- content/browser/devtools/protocol/system_info_handler.cc.orig	2021-01-07 00:36:32 UTC
-+++ content/browser/devtools/protocol/system_info_handler.cc
-@@ -47,7 +47,7 @@ std::unique_ptr<SystemInfo::Size> GfxSizeToSystemInfoS
- // Give the GPU process a few seconds to provide GPU info.
- // Linux Debug builds need more time -- see Issue 796437 and 1046598.
- // Windows builds need more time -- see Issue 873112 and 1004472.
--#if ((defined(OS_LINUX) || defined(OS_CHROMEOS)) && !defined(NDEBUG)) || \
-+#if ((defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && !defined(NDEBUG)) || \
-     defined(OS_WIN)
- const int kGPUInfoWatchdogTimeoutMs = 30000;
- #else
diff --git a/devel/electron11/files/patch-content_browser_gpu_compositor__util.cc b/devel/electron11/files/patch-content_browser_gpu_compositor__util.cc
deleted file mode 100644
index 1e40ca38314d026141432be8820d8967828741c5..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-content_browser_gpu_compositor__util.cc
+++ /dev/null
@@ -1,16 +0,0 @@
---- content/browser/gpu/compositor_util.cc.orig	2021-01-07 00:36:33 UTC
-+++ content/browser/gpu/compositor_util.cc
-@@ -131,11 +131,11 @@ const GpuFeatureData GetGpuFeatureData(
-     {"video_decode",
-      SafeGetFeatureStatus(gpu_feature_info,
-                           gpu::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_DECODE),
--#if defined(OS_LINUX) && !defined(OS_ANDROID) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_ANDROID) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-      !command_line.HasSwitch(switches::kEnableAcceleratedVideoDecode),
- #else
-      command_line.HasSwitch(switches::kDisableAcceleratedVideoDecode),
--#endif  // defined(OS_LINUX) && !defined(OS_ANDROID) && !defined(OS_CHROMEOS)
-+#endif  // (defined(OS_LINUX) && !defined(OS_ANDROID) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-      DisableInfo::Problem(
-          "Accelerated video decode has been disabled, either via blocklist, "
-          "about:flags or the command line."),
diff --git a/devel/electron11/files/patch-content_browser_gpu_gpu__process__host.cc b/devel/electron11/files/patch-content_browser_gpu_gpu__process__host.cc
deleted file mode 100644
index 5e7a06178b856006745bfbee0c384e769e2377d1..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-content_browser_gpu_gpu__process__host.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- content/browser/gpu/gpu_process_host.cc.orig	2021-01-25 11:27:00 UTC
-+++ content/browser/gpu/gpu_process_host.cc
-@@ -1128,7 +1128,7 @@ bool GpuProcessHost::LaunchGpuProcess() {
-   std::unique_ptr<base::CommandLine> cmd_line =
-       std::make_unique<base::CommandLine>(base::CommandLine::NO_PROGRAM);
- #else
--#if defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
-   int child_flags = gpu_launcher.empty() ? ChildProcessHost::CHILD_ALLOW_SELF
-                                          : ChildProcessHost::CHILD_NORMAL;
- #elif defined(OS_MAC)
diff --git a/devel/electron11/files/patch-content_browser_utility__process__host.cc b/devel/electron11/files/patch-content_browser_utility__process__host.cc
deleted file mode 100644
index 8e9b93319fc39dfdc04edabdac2b3f07fde4b883..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-content_browser_utility__process__host.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- content/browser/utility_process_host.cc.orig	2021-01-07 00:36:33 UTC
-+++ content/browser/utility_process_host.cc
-@@ -58,7 +58,7 @@ UtilityProcessHost::UtilityProcessHost()
- 
- UtilityProcessHost::UtilityProcessHost(std::unique_ptr<Client> client)
-     : sandbox_type_(sandbox::policy::SandboxType::kUtility),
--#if defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
-       child_flags_(ChildProcessHost::CHILD_ALLOW_SELF),
- #else
-       child_flags_(ChildProcessHost::CHILD_NORMAL),
diff --git a/devel/electron11/files/patch-content_browser_web__contents_web__contents__view__aura.cc b/devel/electron11/files/patch-content_browser_web__contents_web__contents__view__aura.cc
deleted file mode 100644
index 0d8d369d6e3aee1ffa4a09be1ea0be9bdb4d9ac7..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-content_browser_web__contents_web__contents__view__aura.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- content/browser/web_contents/web_contents_view_aura.cc.orig	2021-01-25 11:26:59 UTC
-+++ content/browser/web_contents/web_contents_view_aura.cc
-@@ -1209,7 +1209,7 @@ void WebContentsViewAura::OnMouseEvent(ui::MouseEvent*
-     // Linux window managers like to handle raise-on-click themselves.  If we
-     // raise-on-click manually, this may override user settings that prevent
-     // focus-stealing.
--#if !defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if !defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_BSD)
-     // It is possible for the web-contents to be destroyed while it is being
-     // activated. Use a weak-ptr to track whether that happened or not.
-     // More in https://crbug.com/1040725
diff --git a/devel/electron11/files/patch-content_browser_webui_shared__resources__data__source.cc b/devel/electron11/files/patch-content_browser_webui_shared__resources__data__source.cc
deleted file mode 100644
index 93061ae7ac62339d23fa45c02aca4410a5b6eadb..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-content_browser_webui_shared__resources__data__source.cc
+++ /dev/null
@@ -1,18 +0,0 @@
---- content/browser/webui/shared_resources_data_source.cc.orig	2021-01-07 00:36:33 UTC
-+++ content/browser/webui/shared_resources_data_source.cc
-@@ -120,13 +120,13 @@ const std::map<int, std::string> CreateMojoResourceIdT
-          "mojo/mojo/public/mojom/base/text_direction.mojom.html"},
-         {IDR_MOJO_TEXT_DIRECTION_MOJOM_LITE_JS,
-          "mojo/mojo/public/mojom/base/text_direction.mojom-lite.js"},
--#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
-+#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD) || \
-     defined(OS_CHROMEOS) || defined(OS_ANDROID)
-         {IDR_MOJO_TIME_MOJOM_HTML,
-          "mojo/mojo/public/mojom/base/time.mojom.html"},
-         {IDR_MOJO_TIME_MOJOM_LITE_JS,
-          "mojo/mojo/public/mojom/base/time.mojom-lite.js"},
--#endif  // defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) ||
-+#endif  // defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD) ||
-         // defined(OS_CHROMEOS) || defined(OS_ANDROID)
-   };
- }
diff --git a/devel/electron11/files/patch-content_common_BUILD.gn b/devel/electron11/files/patch-content_common_BUILD.gn
deleted file mode 100644
index 715f4a603f2b456bb53198f7d657f98829cdc2fe..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-content_common_BUILD.gn
+++ /dev/null
@@ -1,27 +0,0 @@
---- content/common/BUILD.gn.orig	2021-01-07 00:36:33 UTC
-+++ content/common/BUILD.gn
-@@ -328,6 +328,15 @@ source_set("common") {
-     libs += [ "android" ]
-   }
- 
-+  if (is_bsd) {
-+    sources -= [
-+      "sandbox_init_linux.cc",
-+    ]
-+    deps += [
-+      "//third_party/fontconfig",
-+    ]
-+  }
-+
-   if (is_debug && !is_component_build && enable_plugins) {
-     # Content depends on the PPAPI message logging stuff; if this isn't here,
-     # some unit test binaries won't compile. This only worked in release mode
-@@ -345,7 +354,7 @@ source_set("common") {
-     sources -= [ "cursors/webcursor_aura.cc" ]
-   }
- 
--  if (is_linux || is_chromeos) {
-+  if ((is_linux || is_chromeos) && !is_bsd) {
-     sources += [
-       "zygote/sandbox_support_linux.cc",
-       "zygote/send_zygote_child_ping_linux.cc",
diff --git a/devel/electron11/files/patch-content_public_common_content__switches.cc b/devel/electron11/files/patch-content_public_common_content__switches.cc
deleted file mode 100644
index 58903c777a09e46f36c6d83401350808d21a801f..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-content_public_common_content__switches.cc
+++ /dev/null
@@ -1,20 +0,0 @@
---- content/public/common/content_switches.cc.orig	2021-01-07 00:36:33 UTC
-+++ content/public/common/content_switches.cc
-@@ -905,7 +905,7 @@ const char kWebXrRuntimeWMR[] = "windows-mixed-reality
- const char kDisableAcceleratedVideoDecode[] =
-     "disable-accelerated-video-decode";
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID)) || defined(OS_BSD)
- // Enables hardware acceleration of video decoding on linux. (defaults to off)
- const char kEnableAcceleratedVideoDecode[] = "enable-accelerated-video-decode";
- #endif
-@@ -969,7 +969,7 @@ const char kEnableAggressiveDOMStorageFlushing[] =
- // Enable indication that browser is controlled by automation.
- const char kEnableAutomation[] = "enable-automation";
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_FREEBSD)
- // Allows sending text-to-speech requests to speech-dispatcher, a common
- // Linux speech service. Because it's buggy, the user must explicitly
- // enable it so that visiting a random webpage can't cause instability.
diff --git a/devel/electron11/files/patch-content_public_common_content__switches.h b/devel/electron11/files/patch-content_public_common_content__switches.h
deleted file mode 100644
index fc132c4e73081d729b8064158800e2d2798e04df..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-content_public_common_content__switches.h
+++ /dev/null
@@ -1,20 +0,0 @@
---- content/public/common/content_switches.h.orig	2021-01-07 00:36:33 UTC
-+++ content/public/common/content_switches.h
-@@ -248,7 +248,7 @@ CONTENT_EXPORT extern const char kWebXrRuntimeOrientat
- CONTENT_EXPORT extern const char kWebXrRuntimeOpenXr[];
- CONTENT_EXPORT extern const char kWebXrRuntimeWMR[];
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID)) || defined(OS_BSD)
- CONTENT_EXPORT extern const char kEnableAcceleratedVideoDecode[];
- #endif
- CONTENT_EXPORT extern const char kDisableAcceleratedVideoDecode[];
-@@ -269,7 +269,7 @@ CONTENT_EXPORT extern const char kRemoteDebuggingSocke
- CONTENT_EXPORT extern const char kRendererWaitForJavaDebugger[];
- #endif
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_FREEBSD)
- CONTENT_EXPORT extern const char kEnableSpeechDispatcher[];
- #endif
- 
diff --git a/devel/electron11/files/patch-content_public_test_content__browser__test.cc b/devel/electron11/files/patch-content_public_test_content__browser__test.cc
deleted file mode 100644
index f3231ceaf75d18bd12dba3218b9d70d8eda1167e..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-content_public_test_content__browser__test.cc
+++ /dev/null
@@ -1,29 +0,0 @@
---- content/public/test/content_browser_test.cc.orig	2021-01-07 00:36:33 UTC
-+++ content/public/test/content_browser_test.cc
-@@ -26,7 +26,7 @@
- #include "base/mac/foundation_util.h"
- #endif
- 
--#if !defined(OS_CHROMEOS) && defined(OS_LINUX)
-+#if (!defined(OS_CHROMEOS) && defined(OS_LINUX)) || defined(OS_BSD)
- #include "ui/base/ime/init/input_method_initializer.h"
- #endif
- 
-@@ -87,7 +87,7 @@ void ContentBrowserTest::SetUp() {
- #endif
- 
-   // LinuxInputMethodContextFactory has to be initialized.
--#if !defined(OS_CHROMEOS) && defined(OS_LINUX)
-+#if (!defined(OS_CHROMEOS) && defined(OS_LINUX)) || defined(OS_BSD)
-   ui::InitializeInputMethodForTesting();
- #endif
- 
-@@ -100,7 +100,7 @@ void ContentBrowserTest::TearDown() {
-   BrowserTestBase::TearDown();
- 
-   // LinuxInputMethodContextFactory has to be shutdown.
--#if !defined(OS_CHROMEOS) && defined(OS_LINUX)
-+#if (!defined(OS_CHROMEOS) && defined(OS_LINUX)) || defined(OS_BSD)
-   ui::ShutdownInputMethodForTesting();
- #endif
- }
diff --git a/devel/electron11/files/patch-content_renderer_render__thread__impl.cc b/devel/electron11/files/patch-content_renderer_render__thread__impl.cc
deleted file mode 100644
index fd42e48e9a5cd2ce0c1a92333e81e9a51dfeee81..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-content_renderer_render__thread__impl.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- content/renderer/render_thread_impl.cc.orig	2021-01-25 11:26:59 UTC
-+++ content/renderer/render_thread_impl.cc
-@@ -173,7 +173,7 @@
- 
- #if defined(OS_MAC)
- #include <malloc/malloc.h>
--#else
-+#elif !defined(OS_BSD)
- #include <malloc.h>
- #endif
- 
diff --git a/devel/electron11/files/patch-content_shell_browser_shell__browser__main__parts.cc b/devel/electron11/files/patch-content_shell_browser_shell__browser__main__parts.cc
deleted file mode 100644
index 0b903c2fb1cb4a9df793e63fda0a609c16dbb8be..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-content_shell_browser_shell__browser__main__parts.cc
+++ /dev/null
@@ -1,20 +0,0 @@
---- content/shell/browser/shell_browser_main_parts.cc.orig	2021-01-07 00:36:33 UTC
-+++ content/shell/browser/shell_browser_main_parts.cc
-@@ -54,7 +54,7 @@
- #if defined(USE_AURA) && defined(USE_X11)
- #include "ui/events/devices/x11/touch_factory_x11.h"  // nogncheck
- #endif
--#if !defined(OS_CHROMEOS) && defined(USE_AURA) && defined(OS_LINUX)
-+#if !defined(OS_CHROMEOS) && defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
- #include "ui/base/ime/init/input_method_initializer.h"
- #endif
- #if defined(OS_CHROMEOS)
-@@ -141,7 +141,7 @@ int ShellBrowserMainParts::PreEarlyInitialization() {
-   if (!features::IsUsingOzonePlatform())
-     ui::SetDefaultX11ErrorHandlers();
- #endif
--#if !defined(OS_CHROMEOS) && defined(USE_AURA) && defined(OS_LINUX)
-+#if !defined(OS_CHROMEOS) && defined(USE_AURA) && (defined(OS_BSD) || defined(OS_LINUX))
-   ui::InitializeInputMethodForTesting();
- #endif
- #if defined(OS_ANDROID)
diff --git a/devel/electron11/files/patch-electron_shell_browser_electron__browser__main__parts.cc b/devel/electron11/files/patch-electron_shell_browser_electron__browser__main__parts.cc
deleted file mode 100644
index 670ad64f9f8ecc839b9ae88f5a9dc01c6f852be1..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-electron_shell_browser_electron__browser__main__parts.cc
+++ /dev/null
@@ -1,20 +0,0 @@
---- electron/shell/browser/electron_browser_main_parts.cc.orig	2021-04-02 17:02:59 UTC
-+++ electron/shell/browser/electron_browser_main_parts.cc
-@@ -362,7 +362,7 @@ int ElectronBrowserMainParts::PreCreateThreads() {
-   // happen before the ResourceBundle is loaded
-   if (locale.empty())
-     l10n_util::OverrideLocaleWithCocoaLocale();
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
-   // l10n_util::GetApplicationLocaleInternal uses g_get_language_names(),
-   // which keys off of getenv("LC_ALL").
-   // We must set this env first to make ui::ResourceBundle accept the custom
-@@ -385,7 +385,7 @@ int ElectronBrowserMainParts::PreCreateThreads() {
-   ElectronBrowserClient::SetApplicationLocale(app_locale);
-   fake_browser_process_->SetApplicationLocale(app_locale);
- 
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
-   // Reset to the original LC_ALL since we should not be changing it.
-   if (!locale.empty()) {
-     if (lc_all)
diff --git a/devel/electron11/files/patch-electron_shell_browser_native__window__views.cc b/devel/electron11/files/patch-electron_shell_browser_native__window__views.cc
deleted file mode 100644
index 462240b44065e803b27542c94a80555bcec90a76..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-electron_shell_browser_native__window__views.cc
+++ /dev/null
@@ -1,47 +0,0 @@
---- electron/shell/browser/native_window_views.cc.orig	2021-04-27 14:58:49 UTC
-+++ electron/shell/browser/native_window_views.cc
-@@ -306,7 +306,7 @@ NativeWindowViews::NativeWindowViews(const gin_helper:
-     last_window_state_ = ui::SHOW_STATE_NORMAL;
- #endif
- 
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
-   // Listen to move events.
-   aura::Window* window = GetNativeWindow();
-   if (window)
-@@ -326,7 +326,7 @@ NativeWindowViews::~NativeWindowViews() {
-   SetForwardMouseMessages(false);
- #endif
- 
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
-   aura::Window* window = GetNativeWindow();
-   if (window)
-     window->RemovePreTargetHandler(this);
-@@ -1391,7 +1391,7 @@ void NativeWindowViews::OnWidgetBoundsChanged(views::W
- }
- 
- void NativeWindowViews::OnWidgetDestroying(views::Widget* widget) {
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
-   aura::Window* window = GetNativeWindow();
-   if (window)
-     window->RemovePreTargetHandler(this);
-@@ -1501,7 +1501,7 @@ void NativeWindowViews::HandleKeyboardEvent(
-   if (widget_destroyed_)
-     return;
- 
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
-   if (event.windows_key_code == ui::VKEY_BROWSER_BACK)
-     NotifyWindowExecuteAppCommand(kBrowserBackward);
-   else if (event.windows_key_code == ui::VKEY_BROWSER_FORWARD)
-@@ -1513,7 +1513,7 @@ void NativeWindowViews::HandleKeyboardEvent(
-   root_view_->HandleKeyEvent(event);
- }
- 
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
- void NativeWindowViews::OnMouseEvent(ui::MouseEvent* event) {
-   if (event->type() != ui::ET_MOUSE_PRESSED)
-     return;
diff --git a/devel/electron11/files/patch-electron_shell_browser_native__window__views.h b/devel/electron11/files/patch-electron_shell_browser_native__window__views.h
deleted file mode 100644
index cb562d6ef6e87a0444d81e8bf53659eb029ddaab..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-electron_shell_browser_native__window__views.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- electron/shell/browser/native_window_views.h.orig	2021-02-19 19:40:19 UTC
-+++ electron/shell/browser/native_window_views.h
-@@ -218,7 +218,7 @@ class NativeWindowViews : public NativeWindow,
-       content::WebContents*,
-       const content::NativeWebKeyboardEvent& event) override;
- 
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
-   // ui::EventHandler:
-   void OnMouseEvent(ui::MouseEvent* event) override;
- #endif
diff --git a/devel/electron11/files/patch-extensions_shell_BUILD.gn b/devel/electron11/files/patch-extensions_shell_BUILD.gn
deleted file mode 100644
index 5ec76e6a51acadb27b54d8ab088ff5648e87ee2d..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-extensions_shell_BUILD.gn
+++ /dev/null
@@ -1,11 +0,0 @@
---- extensions/shell/BUILD.gn.orig	2021-01-07 00:36:35 UTC
-+++ extensions/shell/BUILD.gn
-@@ -202,7 +202,7 @@ source_set("app_shell_lib") {
-     }
-   }
- 
--  if (is_desktop_linux) {
-+  if (is_desktop_linux && !is_bsd) {
-     sources += [
-       "app/shell_crash_reporter_client.cc",
-       "app/shell_crash_reporter_client.h",
diff --git a/devel/electron11/files/patch-extensions_shell_browser_shell__extensions__api__client.cc b/devel/electron11/files/patch-extensions_shell_browser_shell__extensions__api__client.cc
deleted file mode 100644
index 5ddfa60263fcf8f864d511ef89bc06010a50872f..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-extensions_shell_browser_shell__extensions__api__client.cc
+++ /dev/null
@@ -1,20 +0,0 @@
---- extensions/shell/browser/shell_extensions_api_client.cc.orig	2021-01-07 00:36:35 UTC
-+++ extensions/shell/browser/shell_extensions_api_client.cc
-@@ -16,7 +16,7 @@
- #include "extensions/shell/browser/shell_virtual_keyboard_delegate.h"
- #include "extensions/shell/browser/shell_web_view_guest_delegate.h"
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- #include "extensions/shell/browser/api/file_system/shell_file_system_delegate.h"
- #endif
- 
-@@ -52,7 +52,7 @@ ShellExtensionsAPIClient::CreateDisplayInfoProvider() 
-   return std::make_unique<ShellDisplayInfoProvider>();
- }
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- FileSystemDelegate* ShellExtensionsAPIClient::GetFileSystemDelegate() {
-   if (!file_system_delegate_)
-     file_system_delegate_ = std::make_unique<ShellFileSystemDelegate>();
diff --git a/devel/electron11/files/patch-extensions_shell_browser_shell__extensions__api__client.h b/devel/electron11/files/patch-extensions_shell_browser_shell__extensions__api__client.h
deleted file mode 100644
index c5b2238bf20941ae94cb6d73994e4c1923f0d497..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-extensions_shell_browser_shell__extensions__api__client.h
+++ /dev/null
@@ -1,19 +0,0 @@
---- extensions/shell/browser/shell_extensions_api_client.h.orig	2021-01-07 00:36:35 UTC
-+++ extensions/shell/browser/shell_extensions_api_client.h
-@@ -33,14 +33,14 @@ class ShellExtensionsAPIClient : public ExtensionsAPIC
-       content::BrowserContext* browser_context) const override;
-   std::unique_ptr<DisplayInfoProvider> CreateDisplayInfoProvider()
-       const override;
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   FileSystemDelegate* GetFileSystemDelegate() override;
- #endif
-   MessagingDelegate* GetMessagingDelegate() override;
-   FeedbackPrivateDelegate* GetFeedbackPrivateDelegate() override;
- 
-  private:
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   std::unique_ptr<FileSystemDelegate> file_system_delegate_;
- #endif
-   std::unique_ptr<MessagingDelegate> messaging_delegate_;
diff --git a/devel/electron11/files/patch-gpu_ipc_service_gpu__watchdog__thread.cc b/devel/electron11/files/patch-gpu_ipc_service_gpu__watchdog__thread.cc
deleted file mode 100644
index 8658d184c1b99cd0454a3883234bf767065137a4..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-gpu_ipc_service_gpu__watchdog__thread.cc
+++ /dev/null
@@ -1,56 +0,0 @@
---- gpu/ipc/service/gpu_watchdog_thread.cc.orig	2021-01-07 00:36:35 UTC
-+++ gpu/ipc/service/gpu_watchdog_thread.cc
-@@ -57,7 +57,7 @@ const int kNewGpuTimeout = 17000;
- const int kNewGpuTimeout = 15000;
- #endif
- 
--#if defined(USE_X11)
-+#if defined(USE_X11) && !defined(OS_BSD)
- const base::FilePath::CharType kTtyFilePath[] =
-     FILE_PATH_LITERAL("/sys/class/tty/tty0/active");
- #endif
-@@ -75,7 +75,7 @@ GpuWatchdogThreadImplV1::GpuWatchdogThreadImplV1()
-       arm_cpu_time_(),
- #endif
-       suspension_counter_(this)
--#if defined(USE_X11)
-+#if defined(USE_X11) && !defined(OS_BSD)
-       ,
-       host_tty_(-1)
- #endif
-@@ -97,7 +97,7 @@ GpuWatchdogThreadImplV1::GpuWatchdogThreadImplV1()
-   DCHECK(result);
- #endif
- 
--#if defined(USE_X11)
-+#if defined(USE_X11) && !defined(OS_BSD)
-   tty_file_ = base::OpenFile(base::FilePath(kTtyFilePath), "r");
-   UpdateActiveTTY();
-   host_tty_ = active_tty_;
-@@ -239,7 +239,7 @@ GpuWatchdogThreadImplV1::~GpuWatchdogThreadImplV1() {
- 
-   base::PowerMonitor::RemoveObserver(this);
- 
--#if defined(USE_X11)
-+#if defined(USE_X11) && !defined(OS_BSD)
-   if (tty_file_)
-     fclose(tty_file_);
- #endif
-@@ -388,7 +388,7 @@ void GpuWatchdogThreadImplV1::DeliberatelyTerminateToR
-     return;
- #endif
- 
--#if defined(USE_X11)
-+#if defined(USE_X11) && !defined(OS_BSD)
-   // Don't crash if we're not on the TTY of our host X11 server.
-   UpdateActiveTTY();
-   if (host_tty_ != -1 && active_tty_ != -1 && host_tty_ != active_tty_) {
-@@ -548,7 +548,7 @@ base::ThreadTicks GpuWatchdogThreadImplV1::GetWatchedT
- }
- #endif
- 
--#if defined(USE_X11)
-+#if defined(USE_X11) && !defined(OS_BSD)
- void GpuWatchdogThreadImplV1::UpdateActiveTTY() {
-   last_active_tty_ = active_tty_;
- 
diff --git a/devel/electron11/files/patch-gpu_ipc_service_gpu__watchdog__thread.h b/devel/electron11/files/patch-gpu_ipc_service_gpu__watchdog__thread.h
deleted file mode 100644
index 7068d84d31e3b7fc51072e35e1ccba2cd01f2c89..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-gpu_ipc_service_gpu__watchdog__thread.h
+++ /dev/null
@@ -1,20 +0,0 @@
---- gpu/ipc/service/gpu_watchdog_thread.h.orig	2021-01-07 00:36:35 UTC
-+++ gpu/ipc/service/gpu_watchdog_thread.h
-@@ -213,7 +213,7 @@ class GPU_IPC_SERVICE_EXPORT GpuWatchdogThreadImplV1
-   base::ThreadTicks GetWatchedThreadTime();
- #endif
- 
--#if defined(USE_X11)
-+#if defined(USE_X11) && !defined(OS_BSD)
-   void UpdateActiveTTY();
- #endif
- 
-@@ -261,7 +261,7 @@ class GPU_IPC_SERVICE_EXPORT GpuWatchdogThreadImplV1
-   base::Time check_time_;
-   base::TimeTicks check_timeticks_;
- 
--#if defined(USE_X11)
-+#if defined(USE_X11) && !defined(OS_BSD)
-   FILE* tty_file_;
-   int host_tty_;
-   int active_tty_ = -1;
diff --git a/devel/electron11/files/patch-headless_lib_browser_headless__request__context__manager.cc b/devel/electron11/files/patch-headless_lib_browser_headless__request__context__manager.cc
deleted file mode 100644
index 7bb50e10e39da2f0d79b7cf51bb29dbb18029b61..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-headless_lib_browser_headless__request__context__manager.cc
+++ /dev/null
@@ -1,29 +0,0 @@
---- headless/lib/browser/headless_request_context_manager.cc.orig	2021-01-07 00:36:35 UTC
-+++ headless/lib/browser/headless_request_context_manager.cc
-@@ -26,7 +26,7 @@ namespace headless {
- 
- namespace {
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- constexpr char kProductName[] = "HeadlessChrome";
- #endif
- 
-@@ -56,7 +56,7 @@ net::NetworkTrafficAnnotationTag GetProxyConfigTraffic
-   return traffic_annotation;
- }
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- ::network::mojom::CryptConfigPtr BuildCryptConfigOnce(
-     const base::FilePath& user_data_path) {
-   static bool done_once = false;
-@@ -213,7 +213,7 @@ HeadlessRequestContextManager::HeadlessRequestContextM
-     proxy_config_monitor_ = std::make_unique<HeadlessProxyConfigMonitor>(
-         base::ThreadTaskRunnerHandle::Get());
-   }
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   auto crypt_config = BuildCryptConfigOnce(user_data_path_);
-   if (crypt_config)
-     content::GetNetworkService()->SetCryptConfig(std::move(crypt_config));
diff --git a/devel/electron11/files/patch-media_base_media__switches.cc b/devel/electron11/files/patch-media_base_media__switches.cc
deleted file mode 100644
index 734da38df85643f2e9c5ac98bfb932c8ea2ba8c6..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-media_base_media__switches.cc
+++ /dev/null
@@ -1,20 +0,0 @@
---- media/base/media_switches.cc.orig	2021-01-07 00:36:36 UTC
-+++ media/base/media_switches.cc
-@@ -361,7 +361,7 @@ const base::Feature kGav1VideoDecoder{"Gav1VideoDecode
- const base::Feature kGlobalMediaControls {
-   "GlobalMediaControls",
- #if defined(OS_WIN) || defined(OS_MAC) || \
--    (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-       base::FEATURE_ENABLED_BY_DEFAULT
- #else
-       base::FEATURE_DISABLED_BY_DEFAULT
-@@ -390,7 +390,7 @@ const base::Feature kGlobalMediaControlsOverlayControl
- const base::Feature kGlobalMediaControlsPictureInPicture {
-   "GlobalMediaControlsPictureInPicture",
- #if defined(OS_WIN) || defined(OS_MAC) || \
--    (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-       base::FEATURE_ENABLED_BY_DEFAULT
- #else
-       base::FEATURE_DISABLED_BY_DEFAULT
diff --git a/devel/electron11/files/patch-media_base_status.cc b/devel/electron11/files/patch-media_base_status.cc
deleted file mode 100644
index a7f93a412c83f9c595de5556eadc7e15fcca2df4..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-media_base_status.cc
+++ /dev/null
@@ -1,12 +0,0 @@
---- media/base/status.cc.orig	2021-01-07 00:36:36 UTC
-+++ media/base/status.cc
-@@ -70,7 +70,9 @@ Status&& Status::AddCause(Status&& cause) && {
- 
- void Status::AddFrame(const base::Location& location) {
-   DCHECK(data_);
-+#if SUPPORTS_LOCATION_BUILTINS
-   data_->frames.push_back(MediaSerialize(location));
-+#endif
- }
- 
- Status OkStatus() {
diff --git a/devel/electron11/files/patch-mojo_public_js_mojo__bindings__resources.grd b/devel/electron11/files/patch-mojo_public_js_mojo__bindings__resources.grd
deleted file mode 100644
index 144971d0083e5f5144b5bb2a23309c7afe46b1d8..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-mojo_public_js_mojo__bindings__resources.grd
+++ /dev/null
@@ -1,11 +0,0 @@
---- mojo/public/js/mojo_bindings_resources.grd.orig	2021-01-07 00:36:37 UTC
-+++ mojo/public/js/mojo_bindings_resources.grd
-@@ -59,7 +59,7 @@
-           file="${root_gen_dir}/mojo/public/mojom/base/text_direction.mojom-lite.js"
-           use_base_dir="false"
-           type="BINDATA" />
--      <if expr="is_win or is_macosx or is_linux or is_android">
-+      <if expr="is_win or is_macosx or is_posix or is_android">
-         <include name="IDR_MOJO_TIME_MOJOM_HTML"
-             file="${root_gen_dir}/mojo/public/mojom/base/time.mojom.html"
-             use_base_dir="false"
diff --git a/devel/electron11/files/patch-net_base_network__change__notifier.cc b/devel/electron11/files/patch-net_base_network__change__notifier.cc
deleted file mode 100644
index 3fcd63cf2d36e33e7c2c918e699365c6655f2891..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-net_base_network__change__notifier.cc
+++ /dev/null
@@ -1,24 +0,0 @@
---- net/base/network_change_notifier.cc.orig	2021-01-07 00:36:38 UTC
-+++ net/base/network_change_notifier.cc
-@@ -36,7 +36,7 @@
- #include "net/base/network_change_notifier_linux.h"
- #elif defined(OS_APPLE)
- #include "net/base/network_change_notifier_mac.h"
--#elif defined(OS_CHROMEOS) || defined(OS_ANDROID)
-+#elif defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
- #include "net/base/network_change_notifier_posix.h"
- #elif defined(OS_FUCHSIA)
- #include "net/base/network_change_notifier_fuchsia.h"
-@@ -249,8 +249,11 @@ std::unique_ptr<NetworkChangeNotifier> NetworkChangeNo
- #elif defined(OS_FUCHSIA)
-   return std::make_unique<NetworkChangeNotifierFuchsia>(
-       fuchsia::hardware::ethernet::Features());
-+#elif defined(OS_BSD)
-+  return std::make_unique<MockNetworkChangeNotifier>(
-+      std::make_unique<SystemDnsConfigChangeNotifier>(
-+          nullptr /* task_runner */, nullptr /* dns_config_service */));
- #else
--  NOTIMPLEMENTED();
-   return NULL;
- #endif
- }
diff --git a/devel/electron11/files/patch-net_base_network__interfaces__posix.h b/devel/electron11/files/patch-net_base_network__interfaces__posix.h
deleted file mode 100644
index 96360730903fb01399450dcafd0ce98e0b0c26cb..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-net_base_network__interfaces__posix.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- net/base/network_interfaces_posix.h.orig	2021-01-07 00:36:38 UTC
-+++ net/base/network_interfaces_posix.h
-@@ -8,6 +8,8 @@
- // This file provides some basic functionality shared between
- // network_interfaces_linux.cc and network_interfaces_getifaddrs.cc.
- 
-+#include <sys/socket.h>
-+
- #include <string>
- 
- struct sockaddr;
diff --git a/devel/electron11/files/patch-net_dns_dns__util.cc b/devel/electron11/files/patch-net_dns_dns__util.cc
deleted file mode 100644
index 350d5a6b35f8bc7207678b6aa08419fa9adc1d63..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-net_dns_dns__util.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- net/dns/dns_util.cc.orig	2021-01-07 00:36:38 UTC
-+++ net/dns/dns_util.cc
-@@ -39,6 +39,8 @@ const uint16_t kFlagNamePointer = 0xc000;
- 
- }  // namespace
- 
-+#include <sys/socket.h>
-+
- #if defined(OS_POSIX)
- #include <netinet/in.h>
- #if !defined(OS_NACL)
diff --git a/devel/electron11/files/patch-net_nqe_network__quality__estimator__unittest.cc b/devel/electron11/files/patch-net_nqe_network__quality__estimator__unittest.cc
deleted file mode 100644
index 1b56981f250514c02c04b5060535728a639bbce4..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-net_nqe_network__quality__estimator__unittest.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- net/nqe/network_quality_estimator_unittest.cc.orig	2021-01-07 00:36:38 UTC
-+++ net/nqe/network_quality_estimator_unittest.cc
-@@ -2114,7 +2114,7 @@ TEST_F(NetworkQualityEstimatorTest, TestGlobalSocketWa
- // TestTCPSocketRTT requires kernel support for tcp_info struct, and so it is
- // enabled only on certain platforms.
- // ChromeOS is disabled due to crbug.com/986904
--#if (defined(TCP_INFO) || defined(OS_LINUX) || defined(OS_ANDROID)) && \
-+#if (defined(TCP_INFO) || defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)) && \
-     !defined(OS_CHROMEOS)
- #define MAYBE_TestTCPSocketRTT TestTCPSocketRTT
- #else
diff --git a/devel/electron11/files/patch-net_url__request_url__fetcher.cc b/devel/electron11/files/patch-net_url__request_url__fetcher.cc
deleted file mode 100644
index 4f66b06febc66dbd8944220f1976ce6d55c22689..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-net_url__request_url__fetcher.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- net/url_request/url_fetcher.cc.orig	2021-01-07 00:36:39 UTC
-+++ net/url_request/url_fetcher.cc
-@@ -21,7 +21,7 @@ void URLFetcher::SetIgnoreCertificateRequests(bool ign
-   URLFetcherImpl::SetIgnoreCertificateRequests(ignored);
- }
- 
--#if (!defined(OS_WIN) && !defined(OS_LINUX)) || defined(OS_CHROMEOS)
-+#if (!defined(OS_WIN) && !defined(OS_LINUX) && !defined(OS_BSD)) || defined(OS_CHROMEOS)
- // static
- std::unique_ptr<URLFetcher> URLFetcher::Create(
-     const GURL& url,
diff --git a/devel/electron11/files/patch-net_url__request_url__fetcher.h b/devel/electron11/files/patch-net_url__request_url__fetcher.h
deleted file mode 100644
index 3f6ae9dc26eb788ea0b0dac4d07b6622d77ff9a1..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-net_url__request_url__fetcher.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- net/url_request/url_fetcher.h.orig	2021-01-07 00:36:39 UTC
-+++ net/url_request/url_fetcher.h
-@@ -355,7 +355,7 @@ class NET_EXPORT URLFetcher {
-   // The unannotated Create() methods are not available on desktop Linux +
-   // Windows. They are available on other platforms, since we only audit network
-   // annotations on Linux & Windows.
--#if (!defined(OS_WIN) && !defined(OS_LINUX)) || defined(OS_CHROMEOS)
-+#if (!defined(OS_WIN) && !defined(OS_LINUX) && !defined(OS_BSD)) || defined(OS_CHROMEOS)
-   // |url| is the URL to send the request to. It must be valid.
-   // |request_type| is the type of request to make.
-   // |d| the object that will receive the callback on fetch completion.
diff --git a/devel/electron11/files/patch-net_url__request_url__request__context.cc b/devel/electron11/files/patch-net_url__request_url__request__context.cc
deleted file mode 100644
index c1d97f343f96d659548381c14b00fb716d15956e..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-net_url__request_url__request__context.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- net/url_request/url_request_context.cc.orig	2021-01-07 00:36:39 UTC
-+++ net/url_request/url_request_context.cc
-@@ -91,7 +91,7 @@ const HttpNetworkSession::Context* URLRequestContext::
-   return &network_session->context();
- }
- 
--#if (!defined(OS_WIN) && !defined(OS_LINUX)) || defined(OS_CHROMEOS)
-+#if (!defined(OS_WIN) && !defined(OS_LINUX) && !defined(OS_BSD)) || defined(OS_CHROMEOS)
- std::unique_ptr<URLRequest> URLRequestContext::CreateRequest(
-     const GURL& url,
-     RequestPriority priority,
diff --git a/devel/electron11/files/patch-net_url__request_url__request__context.h b/devel/electron11/files/patch-net_url__request_url__request__context.h
deleted file mode 100644
index 1ee857533f794f001a99d0fa04f8e10bc7a780d5..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-net_url__request_url__request__context.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- net/url_request/url_request_context.h.orig	2021-01-07 00:36:39 UTC
-+++ net/url_request/url_request_context.h
-@@ -83,7 +83,7 @@ class NET_EXPORT URLRequestContext
-   // session.
-   const HttpNetworkSession::Context* GetNetworkSessionContext() const;
- 
--#if (!defined(OS_WIN) && !defined(OS_LINUX)) || defined(OS_CHROMEOS)
-+#if (!defined(OS_WIN) && !defined(OS_LINUX) && !defined(OS_BSD)) || defined(OS_CHROMEOS)
-   // This function should not be used in Chromium, please use the version with
-   // NetworkTrafficAnnotationTag in the future.
-   //
diff --git a/devel/electron11/files/patch-ppapi_proxy_flash__resource.cc b/devel/electron11/files/patch-ppapi_proxy_flash__resource.cc
deleted file mode 100644
index 8466f87d807f9ca88b1a15d606df902f3e9317f5..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-ppapi_proxy_flash__resource.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- ppapi/proxy/flash_resource.cc.orig	2021-01-07 00:36:39 UTC
-+++ ppapi/proxy/flash_resource.cc
-@@ -136,7 +136,7 @@ double FlashResource::GetLocalTimeZoneOffset(PP_Instan
-   // require filesystem access prohibited by the sandbox.
-   // TODO(shess): Figure out why OSX needs the access, the sandbox warmup should
-   // handle it.  http://crbug.com/149006
--#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
-+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
-   int32_t result = SyncCall<PpapiPluginMsg_Flash_GetLocalTimeZoneOffsetReply>(
-       BROWSER,
-       PpapiHostMsg_Flash_GetLocalTimeZoneOffset(PPTimeToTime(t)),
diff --git a/devel/electron11/files/patch-printing_print__settings__conversion.cc b/devel/electron11/files/patch-printing_print__settings__conversion.cc
deleted file mode 100644
index 14823485dd7371fdad96a659c08a090dbcdb3538..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-printing_print__settings__conversion.cc
+++ /dev/null
@@ -1,28 +0,0 @@
---- printing/print_settings_conversion.cc.orig	2021-01-07 00:36:39 UTC
-+++ printing/print_settings_conversion.cc
-@@ -182,7 +182,7 @@ std::unique_ptr<PrintSettings> PrintSettingsFromJobSet
-     return nullptr;
-   }
- 
--#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
-   base::Optional<int> dpi_horizontal =
-       job_settings.FindIntKey(kSettingDpiHorizontal);
-   base::Optional<int> dpi_vertical =
-@@ -212,14 +212,14 @@ std::unique_ptr<PrintSettings> PrintSettingsFromJobSet
- #endif
-   }
- 
--#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && defined(USE_CUPS))
-+#if defined(OS_CHROMEOS) || ((defined(OS_LINUX) || defined(OS_BSD)) && defined(USE_CUPS))
-   const base::Value* advanced_settings =
-       job_settings.FindDictKey(kSettingAdvancedSettings);
-   if (advanced_settings) {
-     for (const auto& item : advanced_settings->DictItems())
-       settings->advanced_settings().emplace(item.first, item.second.Clone());
-   }
--#endif  // defined(OS_CHROMEOS) || (defined(OS_LINUX) && defined(USE_CUPS))
-+#endif  // defined(OS_CHROMEOS) || ((defined(OS_LINUX) || defined(OS_BSD)) && defined(USE_CUPS))
- 
- #if defined(OS_CHROMEOS)
-   bool send_user_info =
diff --git a/devel/electron11/files/patch-remoting_host_host__details.cc b/devel/electron11/files/patch-remoting_host_host__details.cc
deleted file mode 100644
index 257964797708505b8876eac93d3d0452085674f9..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-remoting_host_host__details.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- remoting/host/host_details.cc.orig	2021-01-07 00:36:39 UTC
-+++ remoting/host/host_details.cc
-@@ -22,7 +22,7 @@ std::string GetHostOperatingSystemName() {
-   return "Mac";
- #elif defined(OS_CHROMEOS)
-   return "ChromeOS";
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
-   return "Linux";
- #elif defined(OS_ANDROID)
-   return "Android";
diff --git a/devel/electron11/files/patch-services_device_serial_BUILD.gn b/devel/electron11/files/patch-services_device_serial_BUILD.gn
deleted file mode 100644
index d344921d09110a5d815885b5398d31e9652e9017..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-services_device_serial_BUILD.gn
+++ /dev/null
@@ -1,11 +0,0 @@
---- services/device/serial/BUILD.gn.orig	2021-01-07 00:36:39 UTC
-+++ services/device/serial/BUILD.gn
-@@ -11,7 +11,7 @@ import("//build/config/features.gni")
- import("//build/config/deprecated_default_sources_assignment_filter.gni")
- set_sources_assignment_filter(deprecated_default_sources_assignment_filter)
- 
--if (is_win || ((is_linux || is_chromeos) && use_udev) || is_mac) {
-+if (is_win || ((is_linux || is_chromeos) && use_udev) || is_mac || is_bsd) {
-   config("platform_support") {
-     visibility = [ ":serial" ]
-     if (is_win) {
diff --git a/devel/electron11/files/patch-services_network_network__context.cc b/devel/electron11/files/patch-services_network_network__context.cc
deleted file mode 100644
index 463ebb40a0a763bc057f13f2c82b12c190649831..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-services_network_network__context.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- services/network/network_context.cc.orig	2021-04-18 07:12:19 UTC
-+++ services/network/network_context.cc
-@@ -2012,7 +2012,7 @@ URLRequestContextOwner NetworkContext::MakeURLRequestC
- 
-     net::CookieCryptoDelegate* crypto_delegate = nullptr;
-     if (params_->enable_encrypted_cookies) {
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !BUILDFLAG(IS_CHROMECAST)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) && !BUILDFLAG(IS_CHROMECAST)
-       DCHECK(network_service_->os_crypt_config_set())
-           << "NetworkService::SetCryptConfig must be called before creating a "
-              "NetworkContext with encrypted cookies.";
diff --git a/devel/electron11/files/patch-services_network_network__service.cc b/devel/electron11/files/patch-services_network_network__service.cc
deleted file mode 100644
index 5589da00c83496306db656d14722c6e7a5a79717..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-services_network_network__service.cc
+++ /dev/null
@@ -1,20 +0,0 @@
---- services/network/network_service.cc.orig	2021-01-07 00:36:39 UTC
-+++ services/network/network_service.cc
-@@ -70,7 +70,7 @@
- #include "third_party/boringssl/src/include/openssl/cpu.h"
- #endif
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !BUILDFLAG(IS_CHROMECAST)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) && !BUILDFLAG(IS_CHROMECAST)
- #include "components/os_crypt/key_storage_config_linux.h"
- #endif
- 
-@@ -670,7 +670,7 @@ void NetworkService::OnCertDBChanged() {
-   net::CertDatabase::GetInstance()->NotifyObserversCertDBChanged();
- }
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- void NetworkService::SetCryptConfig(mojom::CryptConfigPtr crypt_config) {
- #if !BUILDFLAG(IS_CHROMECAST)
-   DCHECK(!os_crypt_config_set_);
diff --git a/devel/electron11/files/patch-third__party_angle_BUILD.gn b/devel/electron11/files/patch-third__party_angle_BUILD.gn
deleted file mode 100644
index 436d8a481d6952840a738aae97203d4a09dd557a..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-third__party_angle_BUILD.gn
+++ /dev/null
@@ -1,38 +0,0 @@
---- third_party/angle/BUILD.gn.orig	2021-01-07 00:39:26 UTC
-+++ third_party/angle/BUILD.gn
-@@ -141,10 +141,17 @@ config("extra_warnings") {
-     ]
-   }
-   if (is_clang) {
-+    if (!is_bsd) {
-+      cflags += [
-+        "-Wdeprecated-copy",
-+        "-Wsuggest-destructor-override",
-+        "-Wsuggest-override",
-+      ]
-+    }
-+
-     cflags += [
-       "-Wbad-function-cast",
-       "-Wconditional-uninitialized",
--      "-Wdeprecated-copy",
-       "-Wextra-semi-stmt",
-       "-Wfloat-conversion",
-       "-Winconsistent-missing-destructor-override",
-@@ -154,8 +161,6 @@ config("extra_warnings") {
-       "-Wredundant-parens",
-       "-Wreturn-std-move-in-c++11",
-       "-Wshadow-field",
--      "-Wsuggest-destructor-override",
--      "-Wsuggest-override",
-       "-Wtautological-type-limit-compare",
-       "-Wundefined-reinterpret-cast",
-       "-Wunneeded-internal-declaration",
-@@ -396,6 +401,7 @@ angle_static_library("angle_gpu_info_util") {
-         "X11",
-         "Xi",
-         "Xext",
-+        "GL",
-       ]
-     }
-   }
diff --git a/devel/electron11/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_loader.c b/devel/electron11/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_loader.c
deleted file mode 100644
index dc0b2aaa02b41e5495f4212f82277066c84fa4b4..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_loader.c
+++ /dev/null
@@ -1,11 +0,0 @@
---- third_party/angle/third_party/vulkan-loader/src/loader/loader.c.orig	2021-01-07 00:39:38 UTC
-+++ third_party/angle/third_party/vulkan-loader/src/loader/loader.c
-@@ -250,7 +250,7 @@ void *loader_device_heap_realloc(const struct loader_d
- }
- 
- // Environment variables
--#if defined(__linux__) || defined(__APPLE__)
-+#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__)
- 
- static inline bool IsHighIntegrity() {
-     return geteuid() != getuid() || getegid() != getgid();
diff --git a/devel/electron11/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_vk__loader__platform.h b/devel/electron11/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_vk__loader__platform.h
deleted file mode 100644
index 4b9f7ec0fafa7232c948646dd1c5848d3e1f868a..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_vk__loader__platform.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- third_party/angle/third_party/vulkan-loader/src/loader/vk_loader_platform.h.orig	2021-01-07 00:39:38 UTC
-+++ third_party/angle/third_party/vulkan-loader/src/loader/vk_loader_platform.h
-@@ -31,7 +31,7 @@
- #include "vulkan/vk_platform.h"
- #include "vulkan/vk_sdk_platform.h"
- 
--#if defined(__linux__) || defined(__APPLE__)
-+#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__)
- /* Linux-specific common code: */
- 
- // Headers:
diff --git a/devel/electron11/files/patch-third__party_blink_public_common_privacy__budget_identifiable__token.h b/devel/electron11/files/patch-third__party_blink_public_common_privacy__budget_identifiable__token.h
deleted file mode 100644
index 89f4a3355149dde3ff79103221cfc6a822ca0551..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-third__party_blink_public_common_privacy__budget_identifiable__token.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- third_party/blink/public/common/privacy_budget/identifiable_token.h.orig	2021-01-07 00:36:41 UTC
-+++ third_party/blink/public/common/privacy_budget/identifiable_token.h
-@@ -118,7 +118,7 @@ class IdentifiableToken {
- 
-   // Enums. Punt to the underlying type.
-   template <typename T,
--            typename U = typename std::underlying_type<T>::type,
-+            typename U = typename std::__sfinae_underlying_type<T>::type,
-             typename std::enable_if_t<std::is_enum<T>::value>* = nullptr>
-   constexpr IdentifiableToken(T in)  // NOLINT(google-explicit-constructor)
-       : IdentifiableToken(static_cast<U>(in)) {}
diff --git a/devel/electron11/files/patch-third__party_blink_renderer_BUILD.gn b/devel/electron11/files/patch-third__party_blink_renderer_BUILD.gn
deleted file mode 100644
index fc19ad9f5269adb3826869df61c7f291d472cb14..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-third__party_blink_renderer_BUILD.gn
+++ /dev/null
@@ -1,13 +0,0 @@
---- third_party/blink/renderer/BUILD.gn.orig	2021-01-07 00:36:41 UTC
-+++ third_party/blink/renderer/BUILD.gn
-@@ -45,8 +45,8 @@ config("inside_blink") {
-       "-Wconversion",
-       "-Wno-float-conversion",
-       "-Wno-sign-conversion",
--      "-Wno-implicit-float-conversion",
--      "-Wno-implicit-int-conversion",
-+#      "-Wno-implicit-float-conversion",
-+#      "-Wno-implicit-int-conversion",
-     ]
- 
-     if (!is_chromeos || default_toolchain != "//build/toolchain/cros:target") {
diff --git a/devel/electron11/files/patch-third__party_blink_renderer_core_exported_web__frame__test.cc b/devel/electron11/files/patch-third__party_blink_renderer_core_exported_web__frame__test.cc
deleted file mode 100644
index 56751f62487cb5cb96d38bdefd2803a8baaeb563..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-third__party_blink_renderer_core_exported_web__frame__test.cc
+++ /dev/null
@@ -1,20 +0,0 @@
---- third_party/blink/renderer/core/exported/web_frame_test.cc.orig	2021-01-07 00:36:41 UTC
-+++ third_party/blink/renderer/core/exported/web_frame_test.cc
-@@ -6054,7 +6054,7 @@ TEST_F(WebFrameTest, DISABLED_PositionForPointTest) {
-   EXPECT_EQ(64, ComputeOffset(layout_object, 1000, 1000));
- }
- 
--#if !defined(OS_MAC) && !defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if !defined(OS_MAC) && !defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_BSD)
- TEST_F(WebFrameTest, SelectRangeStaysHorizontallyAlignedWhenMoved) {
-   RegisterMockedHttpURLLoad("move_caret.html");
- 
-@@ -6387,7 +6387,7 @@ TEST_F(CompositedSelectionBoundsTest, Editable) {
- TEST_F(CompositedSelectionBoundsTest, EditableDiv) {
-   RunTest("composited_selection_bounds_editable_div.html");
- }
--#if defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
- #if !defined(OS_ANDROID)
- TEST_F(CompositedSelectionBoundsTest, Input) {
-   RunTest("composited_selection_bounds_input.html");
diff --git a/devel/electron11/files/patch-third__party_electron__node_deps_uv_src_unix_pipe.c b/devel/electron11/files/patch-third__party_electron__node_deps_uv_src_unix_pipe.c
deleted file mode 100644
index d01c2065440c72d37e51add68d93d4b8a0a93aef..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-third__party_electron__node_deps_uv_src_unix_pipe.c
+++ /dev/null
@@ -1,18 +0,0 @@
---- third_party/electron_node/deps/uv/src/unix/pipe.c.orig	2020-07-22 14:57:01 UTC
-+++ third_party/electron_node/deps/uv/src/unix/pipe.c
-@@ -150,9 +150,13 @@ int uv_pipe_open(uv_pipe_t* handle, uv_file fd) {
-   if (mode == -1)
-     return UV__ERR(errno); /* according to docs, must be EBADF */
- 
-+  /* If ioctl(FIONBIO) reports ENOTTY, try fcntl(F_GETFL) + fcntl(F_SETFL).
-+   * Workaround for e.g. kqueue fds not supporting ioctls.
-+   */
-   err = uv__nonblock(fd, 1);
--  if (err)
--    return err;
-+  if (err == UV_ENOTTY)
-+    if (uv__nonblock == uv__nonblock_ioctl)
-+      err = uv__nonblock_fcntl(fd, 1);
- 
- #if defined(__APPLE__)
-   err = uv__stream_try_select((uv_stream_t*) handle, &fd);
diff --git a/devel/electron11/files/patch-third__party_nearby_src_cpp_core__v2_internal_offline__service__controller.h b/devel/electron11/files/patch-third__party_nearby_src_cpp_core__v2_internal_offline__service__controller.h
deleted file mode 100644
index 2412fead7a56dca5172f2de35757632d32001f3b..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-third__party_nearby_src_cpp_core__v2_internal_offline__service__controller.h
+++ /dev/null
@@ -1,23 +0,0 @@
---- third_party/nearby/src/cpp/core_v2/internal/offline_service_controller.h.orig	2021-01-07 00:39:33 UTC
-+++ third_party/nearby/src/cpp/core_v2/internal/offline_service_controller.h
-@@ -12,6 +12,20 @@
- // See the License for the specific language governing permissions and
- // limitations under the License.
- 
-+// Copyright 2020 Google LLC
-+//
-+// Licensed under the Apache License, Version 2.0 (the "License");
-+// you may not use this file except in compliance with the License.
-+// You may obtain a copy of the License at
-+//
-+//     https://www.apache.org/licenses/LICENSE-2.0
-+//
-+// Unless required by applicable law or agreed to in writing, software
-+// distributed under the License is distributed on an "AS IS" BASIS,
-+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+// See the License for the specific language governing permissions and
-+// limitations under the License.
-+
- #ifndef CORE_V2_INTERNAL_OFFLINE_SERVICE_CONTROLLER_H_
- #define CORE_V2_INTERNAL_OFFLINE_SERVICE_CONTROLLER_H_
- 
diff --git a/devel/electron11/files/patch-third__party_perfetto_include_perfetto_ext_base_event__fd.h b/devel/electron11/files/patch-third__party_perfetto_include_perfetto_ext_base_event__fd.h
deleted file mode 100644
index 5203f23ca8bcf412de207ba7bd0a7c9bc8af1330..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-third__party_perfetto_include_perfetto_ext_base_event__fd.h
+++ /dev/null
@@ -1,13 +0,0 @@
---- third_party/perfetto/include/perfetto/ext/base/event_fd.h.orig	2021-01-07 00:39:33 UTC
-+++ third_party/perfetto/include/perfetto/ext/base/event_fd.h
-@@ -20,8 +20,8 @@
- #include "perfetto/base/build_config.h"
- #include "perfetto/ext/base/scoped_file.h"
- 
--#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
--    PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
-+#if !PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD) && (PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
-+    PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID))
- #define PERFETTO_USE_EVENTFD() 1
- #else
- #define PERFETTO_USE_EVENTFD() 0
diff --git a/devel/electron11/files/patch-third__party_perfetto_include_perfetto_ext_base_thread__utils.h b/devel/electron11/files/patch-third__party_perfetto_include_perfetto_ext_base_thread__utils.h
deleted file mode 100644
index 3988c551bafdb76e72a4576eb82438abbd03365f..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-third__party_perfetto_include_perfetto_ext_base_thread__utils.h
+++ /dev/null
@@ -1,12 +0,0 @@
---- third_party/perfetto/include/perfetto/ext/base/thread_utils.h.orig	2021-01-07 00:39:33 UTC
-+++ third_party/perfetto/include/perfetto/ext/base/thread_utils.h
-@@ -47,6 +47,9 @@ inline bool MaybeSetThreadName(const std::string& name
- 
- #if PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE)
-   return pthread_setname_np(buf) == 0;
-+#elif PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
-+  pthread_set_name_np(pthread_self(), buf);
-+  return true;
- #else
-   return pthread_setname_np(pthread_self(), buf) == 0;
- #endif
diff --git a/devel/electron11/files/patch-third__party_perfetto_src_base_subprocess.cc b/devel/electron11/files/patch-third__party_perfetto_src_base_subprocess.cc
deleted file mode 100644
index 7598a59255dd9e60ebf4d3f0e90e4037f044c053..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-third__party_perfetto_src_base_subprocess.cc
+++ /dev/null
@@ -1,24 +0,0 @@
---- third_party/perfetto/src/base/subprocess.cc.orig	2021-01-07 00:39:33 UTC
-+++ third_party/perfetto/src/base/subprocess.cc
-@@ -35,8 +35,8 @@
- #include "perfetto/base/time.h"
- #include "perfetto/ext/base/utils.h"
- 
--#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
--    PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
-+#if !PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD) && (PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
-+    PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID))
- #include <sys/prctl.h>
- #endif
- 
-@@ -60,8 +60,8 @@ struct ChildProcessArgs {
- // Don't add any dynamic allocation in this function. This will be invoked
- // under a fork(), potentially in a state where the allocator lock is held.
- void __attribute__((noreturn)) ChildProcess(ChildProcessArgs* args) {
--#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
--    PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
-+#if !PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD) && (PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
-+    PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID))
-   // In no case we want a child process to outlive its parent process. This is
-   // relevant for tests, so that a test failure/crash doesn't leave child
-   // processes around that get reparented to init.
diff --git a/devel/electron11/files/patch-third__party_perfetto_src_base_thread__task__runner.cc b/devel/electron11/files/patch-third__party_perfetto_src_base_thread__task__runner.cc
deleted file mode 100644
index 41a4a00327fb4e8243bc7c4f2b2cc834d49b47bb..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-third__party_perfetto_src_base_thread__task__runner.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- third_party/perfetto/src/base/thread_task_runner.cc.orig	2021-01-07 00:39:33 UTC
-+++ third_party/perfetto/src/base/thread_task_runner.cc
-@@ -28,7 +28,7 @@
- #include "perfetto/ext/base/thread_utils.h"
- #include "perfetto/ext/base/unix_task_runner.h"
- 
--#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
-+#if (PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) && !PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)) || \
-     PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
- #include <sys/prctl.h>
- #endif
diff --git a/devel/electron11/files/patch-third__party_perfetto_src_base_unix__socket.cc b/devel/electron11/files/patch-third__party_perfetto_src_base_unix__socket.cc
deleted file mode 100644
index 30e38f54eb759736695ebf8ee00177f5b58e6827..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-third__party_perfetto_src_base_unix__socket.cc
+++ /dev/null
@@ -1,20 +0,0 @@
---- third_party/perfetto/src/base/unix_socket.cc.orig	2021-01-07 00:39:33 UTC
-+++ third_party/perfetto/src/base/unix_socket.cc
-@@ -37,7 +37,7 @@
- #include "perfetto/ext/base/string_utils.h"
- #include "perfetto/ext/base/utils.h"
- 
--#if PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE)
-+#if PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE) || PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
- #include <sys/ucred.h>
- #endif
- 
-@@ -625,7 +625,7 @@ void UnixSocket::ReadPeerCredentials() {
-   if (sock_raw_.family() != SockFamily::kUnix)
-     return;
- 
--#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
-+#if (PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) && !PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)) || \
-     PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
-   struct ucred user_cred;
-   socklen_t len = sizeof(user_cred);
diff --git a/devel/electron11/files/patch-third__party_usrsctp_BUILD.gn b/devel/electron11/files/patch-third__party_usrsctp_BUILD.gn
deleted file mode 100644
index 769c397ff0477aa074eaa96e71c053d4397adf48..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-third__party_usrsctp_BUILD.gn
+++ /dev/null
@@ -1,22 +0,0 @@
---- third_party/usrsctp/BUILD.gn.orig	2021-01-07 00:37:24 UTC
-+++ third_party/usrsctp/BUILD.gn
-@@ -127,7 +127,7 @@ static_library("usrsctp") {
-     "-UINET6",
-   ]
- 
--  if (is_linux || is_chromeos || is_android) {
-+  if ((is_linux || is_chromeos || is_android) && !is_bsd) {
-     defines += [
-       "__Userspace_os_Linux",
-       "_GNU_SOURCE",
-@@ -137,6 +137,10 @@ static_library("usrsctp") {
-       "HAVE_SA_LEN",
-       "__APPLE_USE_RFC_2292",
-       "__Userspace_os_Darwin",
-+    ]
-+  } else if (is_bsd) {
-+    defines += [
-+      "__Userspace_os_FreeBSD",
-     ]
-   }
- 
diff --git a/devel/electron11/files/patch-third__party_zlib_BUILD.gn b/devel/electron11/files/patch-third__party_zlib_BUILD.gn
deleted file mode 100644
index 822486e2ff69526e9a2f507a1ae7cc91ddd3c500..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-third__party_zlib_BUILD.gn
+++ /dev/null
@@ -1,11 +0,0 @@
---- third_party/zlib/BUILD.gn.orig	2021-04-13 08:26:04 UTC
-+++ third_party/zlib/BUILD.gn
-@@ -108,6 +108,8 @@ if (use_arm_neon_optimizations) {
-       defines = [ "CRC32_ARMV8_CRC32" ]
-       if (is_android) {
-         defines += [ "ARMV8_OS_ANDROID" ]
-+      } else if (is_bsd) {
-+        defines += [ "ARMV8_OS_FREEBSD" ]
-       } else if (is_linux || is_chromeos) {
-         defines += [ "ARMV8_OS_LINUX" ]
-       } else if (is_mac) {
diff --git a/devel/electron11/files/patch-ui_base_clipboard_clipboard__data__endpoint.h b/devel/electron11/files/patch-ui_base_clipboard_clipboard__data__endpoint.h
deleted file mode 100644
index 66efdcb1b657ec25b78e144fad0dc97670bb89af..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-ui_base_clipboard_clipboard__data__endpoint.h
+++ /dev/null
@@ -1,14 +0,0 @@
---- ui/base/clipboard/clipboard_data_endpoint.h.orig	2021-01-07 00:37:26 UTC
-+++ ui/base/clipboard/clipboard_data_endpoint.h
-@@ -15,9 +15,9 @@ namespace ui {
- // destination trying to read the clipboard data.
- // Whenever a new format is supported, a new enum should be added.
- enum class EndpointType {
--#if defined(OS_CHROMEOS) || (OS_LINUX) || (OS_FUCHSIA)
-+#if defined(OS_CHROMEOS) || (OS_LINUX) || (OS_FUCHSIA) || defined(OS_BSD)
-   kGuestOs = 0,  // Guest OS: PluginVM, Crostini.
--#endif           // defined(OS_CHROMEOS) || (OS_LINUX) || (OS_FUCHSIA)
-+#endif           // defined(OS_CHROMEOS) || (OS_LINUX) || (OS_FUCHSIA) || defined(OS_BSD)
- #if defined(OS_CHROMEOS)
-   kArc = 1,               // ARC.
- #endif                    // defined(OS_CHROMEOS)
diff --git a/devel/electron11/files/patch-ui_base_clipboard_clipboard__ozone.cc b/devel/electron11/files/patch-ui_base_clipboard_clipboard__ozone.cc
deleted file mode 100644
index f8fed504a1c5e52cb8c8525b2f3283bc04ffc959..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-ui_base_clipboard_clipboard__ozone.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- ui/base/clipboard/clipboard_ozone.cc.orig	2021-01-07 00:37:26 UTC
-+++ ui/base/clipboard/clipboard_ozone.cc
-@@ -308,7 +308,7 @@ class ClipboardOzone::AsyncClipboardOzone {
- };
- 
- // Uses the factory in the clipboard_linux otherwise.
--#if defined(OS_CHROMEOS) || !defined(OS_LINUX)
-+#if defined(OS_CHROMEOS) || (!defined(OS_LINUX) && !defined(OS_BSD))
- // Clipboard factory method.
- Clipboard* Clipboard::Create() {
- // linux-chromeos uses non-backed clipboard by default, but supports ozone x11
diff --git a/devel/electron11/files/patch-ui_base_ime_init_input__method__initializer.cc b/devel/electron11/files/patch-ui_base_ime_init_input__method__initializer.cc
deleted file mode 100644
index 382328077018a39f07c813a12f3d683851dc2d1a..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-ui_base_ime_init_input__method__initializer.cc
+++ /dev/null
@@ -1,38 +0,0 @@
---- ui/base/ime/init/input_method_initializer.cc.orig	2021-01-07 00:37:26 UTC
-+++ ui/base/ime/init/input_method_initializer.cc
-@@ -10,7 +10,7 @@
- 
- #if defined(OS_CHROMEOS)
- #include "ui/base/ime/chromeos/ime_bridge.h"
--#elif defined(USE_AURA) && defined(OS_LINUX)
-+#elif defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
- #include "base/check.h"
- #include "ui/base/ime/linux/fake_input_method_context_factory.h"
- #elif defined(OS_WIN)
-@@ -20,7 +20,7 @@
- 
- namespace {
- 
--#if !defined(OS_CHROMEOS) && defined(USE_AURA) && defined(OS_LINUX)
-+#if !defined(OS_CHROMEOS) && defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
- const ui::LinuxInputMethodContextFactory*
-     g_linux_input_method_context_factory_for_testing;
- #endif
-@@ -48,7 +48,7 @@ void ShutdownInputMethod() {
- void InitializeInputMethodForTesting() {
- #if defined(OS_CHROMEOS)
-   IMEBridge::Initialize();
--#elif defined(USE_AURA) && defined(OS_LINUX)
-+#elif defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
-   if (!g_linux_input_method_context_factory_for_testing)
-     g_linux_input_method_context_factory_for_testing =
-         new FakeInputMethodContextFactory();
-@@ -67,7 +67,7 @@ void InitializeInputMethodForTesting() {
- void ShutdownInputMethodForTesting() {
- #if defined(OS_CHROMEOS)
-   IMEBridge::Shutdown();
--#elif defined(USE_AURA) && defined(OS_LINUX)
-+#elif defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
-   const LinuxInputMethodContextFactory* factory =
-       LinuxInputMethodContextFactory::instance();
-   CHECK(!factory || factory == g_linux_input_method_context_factory_for_testing)
diff --git a/devel/electron11/files/patch-ui_base_test_skia__gold__pixel__diff.cc b/devel/electron11/files/patch-ui_base_test_skia__gold__pixel__diff.cc
deleted file mode 100644
index 92802f9273e8705e1c2feb4ebf8909b227ea6434..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-ui_base_test_skia__gold__pixel__diff.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- ui/base/test/skia_gold_pixel_diff.cc.orig	2021-01-07 00:37:26 UTC
-+++ ui/base/test/skia_gold_pixel_diff.cc
-@@ -127,7 +127,7 @@ std::string SkiaGoldPixelDiff::GetPlatform() {
-   return "windows";
- #elif defined(OS_APPLE)
-   return "macOS";
--#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   return "linux";
- #endif
- }
diff --git a/devel/electron11/files/patch-ui_base_webui_web__ui__util.cc b/devel/electron11/files/patch-ui_base_webui_web__ui__util.cc
deleted file mode 100644
index 30db0f9c70cbe233485c089df9eed12203017c23..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-ui_base_webui_web__ui__util.cc
+++ /dev/null
@@ -1,20 +0,0 @@
---- ui/base/webui/web_ui_util.cc.orig	2021-01-07 00:37:26 UTC
-+++ ui/base/webui/web_ui_util.cc
-@@ -34,7 +34,7 @@
- #include "base/win/windows_version.h"
- #endif
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- #include "ui/base/ui_base_features.h"
- #endif
- 
-@@ -232,7 +232,7 @@ std::string GetFontFamily() {
- 
- // TODO(dnicoara) Remove Ozone check when PlatformFont support is introduced
- // into Ozone: crbug.com/320050
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   if (!features::IsUsingOzonePlatform()) {
-     font_family = ui::ResourceBundle::GetSharedInstance()
-                       .GetFont(ui::ResourceBundle::BaseFont)
diff --git a/devel/electron11/files/patch-ui_compositor_compositor.cc b/devel/electron11/files/patch-ui_compositor_compositor.cc
deleted file mode 100644
index ee9178b3dbc180b30e78d77412b330ff22733c79..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-ui_compositor_compositor.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- ui/compositor/compositor.cc.orig	2021-01-07 00:37:27 UTC
-+++ ui/compositor/compositor.cc
-@@ -730,7 +730,7 @@ void Compositor::CancelThroughtputTracker(TrackerId tr
-   throughput_tracker_map_.erase(tracker_id);
- }
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- void Compositor::OnCompleteSwapWithNewSize(const gfx::Size& size) {
-   for (auto& observer : observer_list_)
-     observer.OnCompositingCompleteSwapWithNewSize(this, size);
diff --git a/devel/electron11/files/patch-ui_compositor_compositor.h b/devel/electron11/files/patch-ui_compositor_compositor.h
deleted file mode 100644
index 7dfb146bb2774f07d1a44401e465386cf456be5d..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-ui_compositor_compositor.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- ui/compositor/compositor.h.orig	2021-01-25 11:27:00 UTC
-+++ ui/compositor/compositor.h
-@@ -379,7 +379,7 @@ class COMPOSITOR_EXPORT Compositor : public cc::LayerT
-   void StopThroughtputTracker(TrackerId tracker_id) override;
-   void CancelThroughtputTracker(TrackerId tracker_id) override;
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   void OnCompleteSwapWithNewSize(const gfx::Size& size);
- #endif
- 
diff --git a/devel/electron11/files/patch-ui_gfx_native__widget__types.h b/devel/electron11/files/patch-ui_gfx_native__widget__types.h
deleted file mode 100644
index 2298ceb776bae3a52e382c5da9a00d6114b77819..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-ui_gfx_native__widget__types.h
+++ /dev/null
@@ -1,20 +0,0 @@
---- ui/gfx/native_widget_types.h.orig	2021-01-07 00:37:29 UTC
-+++ ui/gfx/native_widget_types.h
-@@ -103,7 +103,7 @@ class ViewAndroid;
- #endif
- class SkBitmap;
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- extern "C" {
- struct _AtkObject;
- typedef struct _AtkObject AtkObject;
-@@ -204,7 +204,7 @@ typedef id NativeViewAccessible;
- #elif defined(OS_MAC)
- typedef NSFont* NativeFont;
- typedef id NativeViewAccessible;
--#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- // Linux doesn't have a native font type.
- typedef AtkObject* NativeViewAccessible;
- #else
diff --git a/devel/electron11/files/patch-ui_gl_gl__features.cc b/devel/electron11/files/patch-ui_gl_gl__features.cc
deleted file mode 100644
index 5f242734ba0a8ca79084cb75aad1d585a0a132c8..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-ui_gl_gl__features.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- ui/gl/gl_features.cc.orig	2021-01-07 00:37:29 UTC
-+++ ui/gl/gl_features.cc
-@@ -14,7 +14,7 @@ namespace features {
- const base::Feature kDefaultPassthroughCommandDecoder{
-   "DefaultPassthroughCommandDecoder",
- #if defined(OS_WIN) || \
--    (defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(CHROMECAST_BUILD))
-+    (defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(CHROMECAST_BUILD)) || defined(OS_BSD)
-       base::FEATURE_ENABLED_BY_DEFAULT
- #else
-       base::FEATURE_DISABLED_BY_DEFAULT
diff --git a/devel/electron11/files/patch-ui_message__center_views_message__popup__view.cc b/devel/electron11/files/patch-ui_message__center_views_message__popup__view.cc
deleted file mode 100644
index ac202f32f079a706e6a4cba39bcfb7b5b593fcbc..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-ui_message__center_views_message__popup__view.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- ui/message_center/views/message_popup_view.cc.orig	2021-01-07 00:37:29 UTC
-+++ ui/message_center/views/message_popup_view.cc
-@@ -110,7 +110,7 @@ void MessagePopupView::AutoCollapse() {
- void MessagePopupView::Show() {
-   views::Widget::InitParams params(views::Widget::InitParams::TYPE_POPUP);
-   params.z_order = ui::ZOrderLevel::kFloatingWindow;
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   // Make the widget explicitly activatable as TYPE_POPUP is not activatable by
-   // default but we need focus for the inline reply textarea.
-   params.activatable = views::Widget::InitParams::ACTIVATABLE_YES;
diff --git a/devel/electron11/files/patch-ui_native__theme_native__theme.h b/devel/electron11/files/patch-ui_native__theme_native__theme.h
deleted file mode 100644
index e2ad630ab8c851cb75b498189a87a7771a7f2c29..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-ui_native__theme_native__theme.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- ui/native_theme/native_theme.h.orig	2021-01-25 11:27:00 UTC
-+++ ui/native_theme/native_theme.h
-@@ -51,7 +51,7 @@ class NATIVE_THEME_EXPORT NativeTheme {
-   // The part to be painted / sized.
-   enum Part {
-     kCheckbox,
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
-     kFrameTopArea,
- #endif
-     kInnerSpinButton,
diff --git a/devel/electron11/files/patch-ui_native__theme_native__theme__base.cc b/devel/electron11/files/patch-ui_native__theme_native__theme__base.cc
deleted file mode 100644
index 8195bf6b7665562aacc936e2aadc13b3d5c50cc1..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-ui_native__theme_native__theme__base.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- ui/native_theme/native_theme_base.cc.orig	2021-01-07 00:37:29 UTC
-+++ ui/native_theme/native_theme_base.cc
-@@ -255,7 +255,7 @@ void NativeThemeBase::Paint(cc::PaintCanvas* canvas,
-     case kCheckbox:
-       PaintCheckbox(canvas, state, rect, extra.button, color_scheme);
-       break;
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
-     case kFrameTopArea:
-       PaintFrameTopArea(canvas, state, rect, extra.frame_top_area,
-                         color_scheme);
diff --git a/devel/electron11/files/patch-ui_views_bubble_bubble__dialog__delegate__view.cc b/devel/electron11/files/patch-ui_views_bubble_bubble__dialog__delegate__view.cc
deleted file mode 100644
index f4ba061ce5f4adabf05b60c0acd3d2b117f9ee53..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-ui_views_bubble_bubble__dialog__delegate__view.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- ui/views/bubble/bubble_dialog_delegate_view.cc.orig	2021-01-07 00:37:29 UTC
-+++ ui/views/bubble/bubble_dialog_delegate_view.cc
-@@ -319,7 +319,7 @@ Widget* BubbleDialogDelegate::CreateBubble(
-   bubble_delegate->SetAnchorView(bubble_delegate->GetAnchorView());
-   Widget* bubble_widget = CreateBubbleWidget(bubble_delegate);
- 
--#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_APPLE)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_APPLE) || defined(OS_BSD)
-   // Linux clips bubble windows that extend outside their parent window bounds.
-   // Mac never adjusts.
-   bubble_delegate->set_adjust_if_offscreen(false);
diff --git a/devel/electron11/files/patch-ui_views_controls_label.cc b/devel/electron11/files/patch-ui_views_controls_label.cc
deleted file mode 100644
index 77930231936fcd30bc4c43ddca023b85dec79392..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-ui_views_controls_label.cc
+++ /dev/null
@@ -1,20 +0,0 @@
---- ui/views/controls/label.cc.orig	2021-01-07 00:37:29 UTC
-+++ ui/views/controls/label.cc
-@@ -726,7 +726,7 @@ bool Label::OnMousePressed(const ui::MouseEvent& event
-     GetFocusManager()->SetFocusedView(this);
-   }
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
-   if (event.IsOnlyMiddleMouseButton() && GetFocusManager() && !had_focus)
-     GetFocusManager()->SetFocusedView(this);
- #endif
-@@ -913,7 +913,7 @@ bool Label::PasteSelectionClipboard() {
- }
- 
- void Label::UpdateSelectionClipboard() {
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   if (!GetObscured()) {
-     ui::ScopedClipboardWriter(ui::ClipboardBuffer::kSelection)
-         .WriteText(GetSelectedText());
diff --git a/devel/electron11/files/patch-ui_views_corewm_tooltip__aura.cc b/devel/electron11/files/patch-ui_views_corewm_tooltip__aura.cc
deleted file mode 100644
index 77c10e19fc2c7474f069ede99c1f9f0f3eced43e..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-ui_views_corewm_tooltip__aura.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- ui/views/corewm/tooltip_aura.cc.orig	2021-01-07 00:37:29 UTC
-+++ ui/views/corewm/tooltip_aura.cc
-@@ -46,7 +46,7 @@ constexpr int kVerticalPaddingBottom = 5;
- 
- // TODO(varkha): Update if native widget can be transparent on Linux.
- bool CanUseTranslucentTooltipWidget() {
--#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_WIN)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_WIN) || defined(OS_BSD)
-   return false;
- #else
-   return true;
diff --git a/devel/electron11/files/patch-ui_views_examples_widget__example.cc b/devel/electron11/files/patch-ui_views_examples_widget__example.cc
deleted file mode 100644
index 5955bf41af925a44d253b6e720b099b5c497d7b3..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-ui_views_examples_widget__example.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- ui/views/examples/widget_example.cc.orig	2021-01-07 00:37:29 UTC
-+++ ui/views/examples/widget_example.cc
-@@ -67,7 +67,7 @@ void WidgetExample::CreateExampleView(View* container)
-               DIALOG);
-   BuildButton(container, GetStringUTF16(IDS_WIDGET_MODAL_BUTTON_LABEL),
-               MODAL_DIALOG);
--#if defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
-   // Windows does not support TYPE_CONTROL top-level widgets.
-   BuildButton(container, GetStringUTF16(IDS_WIDGET_CHILD_WIDGET_BUTTON_LABEL),
-               CHILD);
diff --git a/devel/electron11/files/patch-ui_views_focus_focus__manager.cc b/devel/electron11/files/patch-ui_views_focus_focus__manager.cc
deleted file mode 100644
index 880470667864d9ec7304b1535f4022cac59aa9fb..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-ui_views_focus_focus__manager.cc
+++ /dev/null
@@ -1,20 +0,0 @@
---- ui/views/focus/focus_manager.cc.orig	2021-01-07 00:37:29 UTC
-+++ ui/views/focus/focus_manager.cc
-@@ -622,7 +622,7 @@ bool FocusManager::RedirectAcceleratorToBubbleAnchorWi
-   if (!focus_manager->IsAcceleratorRegistered(accelerator))
-     return false;
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   // Processing an accelerator can delete things. Because we
-   // need these objects afterwards on Linux, save widget_ as weak pointer and
-   // save the close_on_deactivate property value of widget_delegate in a
-@@ -637,7 +637,7 @@ bool FocusManager::RedirectAcceleratorToBubbleAnchorWi
-   const bool accelerator_processed =
-       focus_manager->ProcessAccelerator(accelerator);
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   // Need to manually close the bubble widget on Linux. On Linux when the
-   // bubble is shown, the main widget remains active. Because of that when
-   // focus is set to the main widget to process accelerator, the main widget
diff --git a/devel/electron11/files/patch-ui_views_selection__controller.cc b/devel/electron11/files/patch-ui_views_selection__controller.cc
deleted file mode 100644
index 159d34df431f6801c95231f1beaf65f67a8c5f29..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-ui_views_selection__controller.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- ui/views/selection_controller.cc.orig	2021-01-07 00:37:29 UTC
-+++ ui/views/selection_controller.cc
-@@ -23,7 +23,7 @@ SelectionController::SelectionController(SelectionCont
-       delegate_(delegate),
-       handles_selection_clipboard_(false) {
- // On Linux, update the selection clipboard on a text selection.
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
-   set_handles_selection_clipboard(true);
- #endif
- 
diff --git a/devel/electron11/files/patch-ui_views_style_platform__style.cc b/devel/electron11/files/patch-ui_views_style_platform__style.cc
deleted file mode 100644
index fc9945be15fbfe72a1ddda61d7c00a381fd1f465..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-ui_views_style_platform__style.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- ui/views/style/platform_style.cc.orig	2021-01-07 00:37:29 UTC
-+++ ui/views/style/platform_style.cc
-@@ -75,7 +75,7 @@ gfx::Range PlatformStyle::RangeToDeleteBackwards(const
- #endif  // OS_APPLE
- 
- #if !BUILDFLAG(ENABLE_DESKTOP_AURA) || \
--    (!defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+    (!defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_BSD))
- // static
- std::unique_ptr<Border> PlatformStyle::CreateThemedLabelButtonBorder(
-     LabelButton* button) {
diff --git a/devel/electron11/files/patch-ui_views_views__delegate.cc b/devel/electron11/files/patch-ui_views_views__delegate.cc
deleted file mode 100644
index 81854977f5e1938c213e25ceb71a6abff3dfd3ce..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-ui_views_views__delegate.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- ui/views/views_delegate.cc.orig	2021-01-07 00:37:29 UTC
-+++ ui/views/views_delegate.cc
-@@ -86,7 +86,7 @@ bool ViewsDelegate::IsWindowInMetro(gfx::NativeWindow 
-   return false;
- }
- #elif BUILDFLAG(ENABLE_DESKTOP_AURA) && \
--  (defined(OS_LINUX) || defined(OS_CHROMEOS))
-+  (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD))
- gfx::ImageSkia* ViewsDelegate::GetDefaultWindowIcon() const {
-   return nullptr;
- }
diff --git a/devel/electron11/files/patch-ui_views_views__delegate.h b/devel/electron11/files/patch-ui_views_views__delegate.h
deleted file mode 100644
index bab25bed2a787f348725fd4fa9f57402b47ccff4..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-ui_views_views__delegate.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- ui/views/views_delegate.h.orig	2021-01-07 00:37:29 UTC
-+++ ui/views/views_delegate.h
-@@ -134,7 +134,7 @@ class VIEWS_EXPORT ViewsDelegate {
-   // environment.
-   virtual bool IsWindowInMetro(gfx::NativeWindow window) const;
- #elif BUILDFLAG(ENABLE_DESKTOP_AURA) && \
--  (defined(OS_LINUX) || defined(OS_CHROMEOS))
-+  (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD))
-   virtual gfx::ImageSkia* GetDefaultWindowIcon() const;
- #endif
- 
diff --git a/devel/electron11/files/patch-ui_views_window_custom__frame__view.cc b/devel/electron11/files/patch-ui_views_window_custom__frame__view.cc
deleted file mode 100644
index 31eee81b967fb2ddc1cd8c8854b3c4f99c409bc0..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-ui_views_window_custom__frame__view.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- ui/views/window/custom_frame_view.cc.orig	2021-01-07 00:37:29 UTC
-+++ ui/views/window/custom_frame_view.cc
-@@ -261,7 +261,7 @@ int CustomFrameView::NonClientTopBorderHeight() const 
- int CustomFrameView::CaptionButtonY() const {
-   // Maximized buttons start at window top so that even if their images aren't
-   // drawn flush with the screen edge, they still obey Fitts' Law.
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_BSD)
-   return FrameBorderThickness();
- #else
-   return frame_->IsMaximized() ? FrameBorderThickness() : kFrameShadowThickness;
diff --git a/devel/electron11/files/patch-weblayer_app_content__main__delegate__impl.cc b/devel/electron11/files/patch-weblayer_app_content__main__delegate__impl.cc
deleted file mode 100644
index c56306ba6fe575ded745339bc2469818b835c2dd..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-weblayer_app_content__main__delegate__impl.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- weblayer/app/content_main_delegate_impl.cc.orig	2021-01-07 00:37:29 UTC
-+++ weblayer/app/content_main_delegate_impl.cc
-@@ -225,7 +225,7 @@ bool ContentMainDelegateImpl::ShouldCreateFeatureList(
- 
- void ContentMainDelegateImpl::PreSandboxStartup() {
- #if defined(ARCH_CPU_ARM_FAMILY) && \
--    (defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS))
-+    (defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD))
-   // Create an instance of the CPU class to parse /proc/cpuinfo and cache
-   // cpu_brand info.
-   base::CPU cpu_info;
diff --git a/devel/electron11/files/patch-weblayer_browser_browser__main__parts__impl.cc b/devel/electron11/files/patch-weblayer_browser_browser__main__parts__impl.cc
deleted file mode 100644
index 5b4d7d61574e964a63a6c44ec55e2e4688ba279f..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-weblayer_browser_browser__main__parts__impl.cc
+++ /dev/null
@@ -1,20 +0,0 @@
---- weblayer/browser/browser_main_parts_impl.cc.orig	2021-01-07 00:37:29 UTC
-+++ weblayer/browser/browser_main_parts_impl.cc
-@@ -63,7 +63,7 @@
- #include "ui/base/ui_base_features.h"
- #include "ui/events/devices/x11/touch_factory_x11.h"  // nogncheck
- #endif
--#if !defined(OS_CHROMEOS) && defined(USE_AURA) && defined(OS_LINUX)
-+#if !defined(OS_CHROMEOS) && defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
- #include "ui/base/ime/init/input_method_initializer.h"
- #endif
- 
-@@ -157,7 +157,7 @@ int BrowserMainPartsImpl::PreEarlyInitialization() {
-   if (!features::IsUsingOzonePlatform())
-     ui::SetDefaultX11ErrorHandlers();
- #endif
--#if defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_CHROMEOS))
-+#if defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD))
-   ui::InitializeInputMethodForTesting();
- #endif
- #if defined(OS_ANDROID)
diff --git a/devel/electron11/files/patch-weblayer_browser_content__browser__client__impl.h b/devel/electron11/files/patch-weblayer_browser_content__browser__client__impl.h
deleted file mode 100644
index 8d044935403424d38b4972a0c32f103a07f22b37..0000000000000000000000000000000000000000
--- a/devel/electron11/files/patch-weblayer_browser_content__browser__client__impl.h
+++ /dev/null
@@ -1,17 +0,0 @@
---- weblayer/browser/content_browser_client_impl.h.orig	2021-01-07 00:37:29 UTC
-+++ weblayer/browser/content_browser_client_impl.h
-@@ -116,12 +116,12 @@ class ContentBrowserClientImpl : public content::Conte
-   void RenderProcessWillLaunch(content::RenderProcessHost* host) override;
-   scoped_refptr<content::QuotaPermissionContext> CreateQuotaPermissionContext()
-       override;
--#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
-+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
-   void GetAdditionalMappedFilesForChildProcess(
-       const base::CommandLine& command_line,
-       int child_process_id,
-       content::PosixFileDescriptorInfo* mappings) override;
--#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
-+#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
-   void AppendExtraCommandLineSwitches(base::CommandLine* command_line,
-                                       int child_process_id) override;
- #if defined(OS_ANDROID)
diff --git a/devel/electron11/Makefile b/devel/electron12/Makefile
similarity index 90%
rename from devel/electron11/Makefile
rename to devel/electron12/Makefile
index 0f587561b0c2c7ebf3d53cc0672e14d0c570f4d2..7f524e31ae0743e6dd1a22450f863c9dc10adbb0 100644
--- a/devel/electron11/Makefile
+++ b/devel/electron12/Makefile
@@ -2,12 +2,10 @@ PORTNAME=	electron
 DISTVERSIONPREFIX=	v
 DISTVERSION=	${ELECTRON_VER:S/-beta./.b/}
 CATEGORIES=	devel java
-MASTER_SITES=	https://commondatastorage.googleapis.com/chromium-browser-official/:chromium_official \
-		https://commondatastorage.googleapis.com/chromium-nodejs/:chromium_node \
+MASTER_SITES=	https://commondatastorage.googleapis.com/chromium-browser-official/:chromium \
 		https://commondatastorage.googleapis.com/chromium-fonts/:chromium_testfonts
 PKGNAMESUFFIX=	${ELECTRON_VER_MAJOR}
-DISTFILES=	chromium-${CHROMIUM_OFFICIAL_VER}${EXTRACT_SUFX}:chromium_official \
-		${CHROMIUM_NODE_MODULES_HASH}:chromium_node \
+DISTFILES=	chromium-${CHROMIUM_VER}${EXTRACT_SUFX}:chromium \
 		${CHROMIUM_TEST_FONTS_HASH}:chromium_testfonts \
 		electron-yarn-cache-${ELECTRON_VER}${EXTRACT_SUFX}:prefetch
 DIST_SUBDIR=	${PORTNAME}
@@ -18,15 +16,15 @@ COMMENT=	Build cross-platform desktop apps with JavaScript, HTML, and CSS
 LICENSE=	MIT
 LICENSE_FILE=	${WRKSRC}/electron/LICENSE
 
-FETCH_DEPENDS=		yarn-node12>0:www/yarn-node12
-EXTRACT_DEPENDS=	yarn-node12>0:www/yarn-node12
+FETCH_DEPENDS=		yarn-node14>0:www/yarn-node14
+EXTRACT_DEPENDS=	yarn-node14>0:www/yarn-node14
 PATCH_DEPENDS=		git:devel/git
 BUILD_DEPENDS=		${LOCALBASE}/bin/ar:devel/binutils \
 			gperf:devel/gperf \
 			yasm:devel/yasm \
 			${LOCALBASE}/include/linux/videodev2.h:multimedia/v4l_compat \
-			node12>0:www/node12 \
-			npm-node12>0:www/npm-node12
+			node14>0:www/node14 \
+			npm-node14>0:www/npm-node14
 LIB_DEPENDS=		libatk-bridge-2.0.so:accessibility/at-spi2-atk \
 			libatspi.so:accessibility/at-spi2-core \
 			libsnappy.so:archivers/snappy \
@@ -48,11 +46,12 @@ LIB_DEPENDS=		libatk-bridge-2.0.so:accessibility/at-spi2-atk \
 			libnss3.so:security/nss \
 			libexpat.so:textproc/expat2 \
 			libxkbcommon.so:x11/libxkbcommon \
+			libxshmfence.so:x11/libxshmfence \
 			libfontconfig.so:x11-fonts/fontconfig
 RUN_DEPENDS=		xdg-open:devel/xdg-utils
 TEST_DEPENDS=		git:devel/git \
 			${PYTHON_PKGNAMEPREFIX}python-dbusmock>0:devel/py-python-dbusmock@${PY_FLAVOR} \
-			npm-node12>0:www/npm-node12
+			npm-node14>0:www/npm-node14
 
 USES=		bison dos2unix gettext-tools gl gnome jpeg localbase:ldflags \
 		ninja pkgconfig python:2.7,build,test shebangfix tar:xz xorg
@@ -115,20 +114,16 @@ PULSEAUDIO_LIB_DEPENDS=	libpulse.so:audio/pulseaudio
 PULSEAUDIO_VARS=	GN_ARGS+=use_pulseaudio=true
 PULSEAUDIO_VARS_OFF=	GN_ARGS+=use_pulseaudio=false
 
-# Official chromium version containing "gn" which is known to work
-CHROMIUM_OFFICIAL_VER=		87.0.4280.141
 # See ${WRKSRC}/electron/DEPS for CHROMIUM_VER
-CHROMIUM_VER=			87.0.4280.141
-# See ${WRKSRC}/third_party/node/node_modules.tar.gz.sha1 for CHROMIUM_NODE_MODULES_HASH
-CHROMIUM_NODE_MODULES_HASH=	a9603a3dc03fa41af9cc5c8ac28d23d1f98dfe3c
+CHROMIUM_VER=			89.0.4389.128
 # See ${WRKSRC}/third_party/test_fonts/test_fonts.tar.gz.sha1 for CHROMIUM_TEST_FONTS_HASH
 CHROMIUM_TEST_FONTS_HASH=	cd96fc55dc243f6c6f4cb63ad117cad6cd48dceb
 # See ${WRKSRC}/electron/DEPS for NODE_VER
-NODE_VER=			12.18.3
+NODE_VER=			14.16.0
 # See ${WRKSRC}/electron/DEPS for NAN_VER
 NAN_VER=			2c4ee8a32a299eada3cd6e468bbd0a473bfea96d
 
-YARN_TIMESTAMP=	1619856269
+YARN_TIMESTAMP=	1620459581
 
 GN_ARGS+=		clang_use_chrome_plugins=false \
 			enable_hangout_services_extension=true \
@@ -195,17 +190,10 @@ post-extract:
 		${WRKSRC}/third_party/nan
 	${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${GH_PROJECT_node}-${NODE_VER} \
 		${WRKSRC}/third_party/electron_node
-	# ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/node_modules ${WRKSRC}/third_party/node
 	${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/test_fonts ${WRKSRC}/third_party/test_fonts
 # Take in clang-format from official chromium distribution
 	${MKDIR} ${WRKSRC}/buildtools/freebsd
-	# ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/chromium-${CHROMIUM_OFFICIAL_VER}/buildtools/linux64/clang-format \
-	# 	${WRKSRC}/buildtools/freebsd
 	${CP} ${WRKSRC}/buildtools/linux64/clang-format ${WRKSRC}/buildtools/freebsd
-# Take in gn source files from official chromium distribution
-	# ${RM} -r ${WRKSRC}/tools/gn
-	# ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/chromium-${CHROMIUM_OFFICIAL_VER}/tools/gn \
-	# 	${WRKSRC}/tools/gn
 # Remove unnecessary files
 	${RM} -r ${WRKSRC}/third_party/jdk/current
 	${RM} -r ${WRKSRC}/third_party/jdk/extras
@@ -262,7 +250,7 @@ do-install:
 .for f in electron mksnapshot v8_context_snapshot_generator
 	${INSTALL_PROGRAM} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR}
 .endfor
-.for f in libEGL.so libGLESv2.so libvk_swiftshader.so libvulkan.so
+.for f in libEGL.so libGLESv2.so libvk_swiftshader.so libvulkan.so.1
 	${INSTALL_LIB} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR}
 .endfor
 	${MKDIR} ${STAGEDIR}${DATADIR}/swiftshader
diff --git a/devel/electron11/Makefile.version b/devel/electron12/Makefile.version
similarity index 68%
rename from devel/electron11/Makefile.version
rename to devel/electron12/Makefile.version
index 0b1c41515d83fdf0a0bf3a2118a7d5bd625091a4..6d4ae3f3b0d4def5b16a72b6b2eeec3796bea92e 100644
--- a/devel/electron11/Makefile.version
+++ b/devel/electron12/Makefile.version
@@ -1,2 +1,2 @@
-ELECTRON_VER=	11.4.4
+ELECTRON_VER=	12.0.7
 ELECTRON_VER_MAJOR=	${ELECTRON_VER:C/\..*//}
diff --git a/devel/electron12/distinfo b/devel/electron12/distinfo
new file mode 100644
index 0000000000000000000000000000000000000000..d4d7a3cb4648d048bbd2ac274ab5770866a269b5
--- /dev/null
+++ b/devel/electron12/distinfo
@@ -0,0 +1,13 @@
+TIMESTAMP = 1620460454
+SHA256 (electron/chromium-89.0.4389.128.tar.xz) = 1a75ea6aeb98f2d3b6feae1fbf5692679e93d5b7631bc7c762dd873499deda5b
+SIZE (electron/chromium-89.0.4389.128.tar.xz) = 890850492
+SHA256 (electron/cd96fc55dc243f6c6f4cb63ad117cad6cd48dceb) = ec973eccd669d417fbf2d0a4dac730744a3174268ff062db5451b55c82bc3492
+SIZE (electron/cd96fc55dc243f6c6f4cb63ad117cad6cd48dceb) = 26759650
+SHA256 (electron/electron-yarn-cache-12.0.7.tar.xz) = 03bde46e775e771238c38b64b0ca88feddbe332cd495bac9adf73d317cf40c20
+SIZE (electron/electron-yarn-cache-12.0.7.tar.xz) = 33907768
+SHA256 (electron/electron-electron-v12.0.7_GH0.tar.gz) = 59deac4ab3d050f88bbfe22408afc10775f49083b3f0c04a8775296c5a026b8f
+SIZE (electron/electron-electron-v12.0.7_GH0.tar.gz) = 9990283
+SHA256 (electron/nodejs-node-v14.16.0_GH0.tar.gz) = bcdf869b0743405515ee897b1047b5e851a717e426b4974d26537c9b10dfd53a
+SIZE (electron/nodejs-node-v14.16.0_GH0.tar.gz) = 87850748
+SHA256 (electron/nodejs-nan-2c4ee8a32a299eada3cd6e468bbd0a473bfea96d_GH0.tar.gz) = e4ff33afb043329429c9551d3cc983786553a310a7d61ee313485ba3ac9b2b15
+SIZE (electron/nodejs-nan-2c4ee8a32a299eada3cd6e468bbd0a473bfea96d_GH0.tar.gz) = 178328
diff --git a/devel/electron11/files/apply-electron-patches.sh b/devel/electron12/files/apply-electron-patches.sh
similarity index 100%
rename from devel/electron11/files/apply-electron-patches.sh
rename to devel/electron12/files/apply-electron-patches.sh
diff --git a/devel/electron11/files/package.json b/devel/electron12/files/package.json
similarity index 86%
rename from devel/electron11/files/package.json
rename to devel/electron12/files/package.json
index 6dbd4542e2eb5f7a09936db1805df105d38e1df3..a7026366ed2e118bde10289881e2a34933e3a899 100644
--- a/devel/electron11/files/package.json
+++ b/devel/electron12/files/package.json
@@ -1,11 +1,11 @@
 {
   "name": "electron",
-  "version": "11.4.4",
+  "version": "12.0.7",
   "repository": "https://github.com/electron/electron",
   "description": "Build cross platform desktop apps with JavaScript, HTML, and CSS",
   "devDependencies": {
-    "@electron/docs-parser": "^0.10.0",
-    "@electron/typescript-definitions": "^8.7.5",
+    "@electron/docs-parser": "^0.10.1",
+    "@electron/typescript-definitions": "^8.8.0",
     "@octokit/auth-app": "^2.10.0",
     "@octokit/rest": "^18.0.3",
     "@primer/octicons": "^10.0.0",
@@ -16,16 +16,19 @@
     "@types/dirty-chai": "^2.0.2",
     "@types/express": "^4.17.7",
     "@types/fs-extra": "^9.0.1",
+    "@types/klaw": "^3.0.1",
+    "@types/minimist": "^1.2.0",
     "@types/mocha": "^7.0.2",
-    "@types/node": "^12.12.6",
+    "@types/node": "^14.6.2",
     "@types/semver": "^7.3.3",
     "@types/send": "^0.14.5",
     "@types/split": "^1.0.0",
+    "@types/stream-json": "^1.5.1",
     "@types/uuid": "^3.4.6",
     "@types/webpack": "^4.41.21",
     "@types/webpack-env": "^1.15.2",
-    "@typescript-eslint/eslint-plugin": "^3.9.1",
-    "@typescript-eslint/parser": "^3.9.1",
+    "@typescript-eslint/eslint-plugin": "^4.4.1",
+    "@typescript-eslint/parser": "^4.4.1",
     "asar": "^3.0.3",
     "check-for-leaks": "^1.2.1",
     "colors": "^1.4.0",
@@ -41,6 +44,7 @@
     "express": "^4.16.4",
     "folder-hash": "^2.1.1",
     "fs-extra": "^9.0.1",
+    "got": "^6.3.0",
     "husky": "^2.2.0",
     "klaw": "^3.0.0",
     "lint": "^1.1.2",
@@ -55,6 +59,7 @@
     "semver": "^5.6.0",
     "shx": "^0.3.2",
     "standard-markdown": "^6.0.0",
+    "stream-json": "^1.7.1",
     "sumchecker": "^2.0.2",
     "tap-xunit": "^2.4.1",
     "temp": "^0.8.3",
@@ -63,7 +68,8 @@
     "ts-node": "6.2.0",
     "typescript": "^4.0.2",
     "webpack": "^4.43.0",
-    "webpack-cli": "^3.3.12"
+    "webpack-cli": "^3.3.12",
+    "wrapper-webpack-plugin": "^2.1.0"
   },
   "private": true,
   "scripts": {
@@ -71,7 +77,8 @@
     "generate-version-json": "node script/generate-version-json.js",
     "lint": "node ./script/lint.js && npm run lint:clang-format && npm run lint:docs",
     "lint:js": "node ./script/lint.js --js",
-    "lint:clang-format": "python script/run-clang-format.py -r -c atom/ chromium_src/ || (echo \"\\nCode not formatted correctly.\" && exit 1)",
+    "lint:clang-format": "python script/run-clang-format.py -r -c chromium_src/ shell/ || (echo \"\\nCode not formatted correctly.\" && exit 1)",
+    "lint:clang-tidy": "ts-node ./script/run-clang-tidy.ts",
     "lint:cpp": "node ./script/lint.js --cc",
     "lint:objc": "node ./script/lint.js --objc",
     "lint:py": "node ./script/lint.js --py",
@@ -91,7 +98,7 @@
     "start": "node ./script/start.js",
     "test": "node ./script/spec-runner.js",
     "tsc": "tsc",
-    "webpack": "node build/webpack/run-compiler"
+    "webpack": "webpack"
   },
   "license": "MIT",
   "author": "Electron Community",
@@ -138,6 +145,7 @@
     ]
   },
   "dependencies": {
-    "@types/temp": "^0.8.34"
+    "@types/temp": "^0.8.34",
+    "aws-sdk": "^2.727.1"
   }
 }
diff --git a/devel/electron11/files/patch-BUILD.gn b/devel/electron12/files/patch-BUILD.gn
similarity index 87%
rename from devel/electron11/files/patch-BUILD.gn
rename to devel/electron12/files/patch-BUILD.gn
index bad7679c32f327d38cb67bd23158ec00480794fb..5c391ca2b8feca05e86fe294402d45aea77a9025 100644
--- a/devel/electron11/files/patch-BUILD.gn
+++ b/devel/electron12/files/patch-BUILD.gn
@@ -1,6 +1,6 @@
---- BUILD.gn.orig	2021-01-07 00:36:17 UTC
+--- BUILD.gn.orig	2021-04-14 01:08:35 UTC
 +++ BUILD.gn
-@@ -422,7 +422,7 @@ group("gn_all") {
+@@ -421,7 +421,7 @@ group("gn_all") {
      ]
    }
  
@@ -9,7 +9,7 @@
      deps += [
        "//third_party/breakpad:breakpad_unittests",
        "//third_party/breakpad:core-2-minidump",
-@@ -463,8 +463,6 @@ group("gn_all") {
+@@ -464,8 +464,6 @@ group("gn_all") {
        "//net:disk_cache_memory_test",
        "//net:quic_client",
        "//net:quic_server",
@@ -18,7 +18,7 @@
        "//testing:empty_main",
      ]
  
-@@ -519,10 +517,6 @@ group("gn_all") {
+@@ -520,10 +518,6 @@ group("gn_all") {
          "//chrome/test:load_library_perf_tests",
          "//chrome/test:sync_performance_tests",
          "//chrome/test/chromedriver:chromedriver",
@@ -53,12 +53,12 @@
      }
    }
  
--  if (is_mac || is_win || is_android || (is_linux && !is_chromeos)) {
-+  if (is_mac || is_win || is_android || (is_linux && !is_chromeos && !is_bsd)) {
+-  if (is_mac || is_win || is_android || is_linux || is_chromeos) {
++  if (is_mac || is_win || is_android || (is_linux && !is_bsd) || is_chromeos) {
      deps += [
        "//third_party/crashpad/crashpad:crashpad_tests",
        "//third_party/crashpad/crashpad/handler:crashpad_handler",
-@@ -797,7 +787,6 @@ group("gn_all") {
+@@ -790,7 +780,6 @@ group("gn_all") {
        "//chrome/browser/vr:vr_common_perftests",
        "//chrome/browser/vr:vr_common_unittests",
        "//chrome/browser/vr:vr_pixeltests",
@@ -66,7 +66,7 @@
      ]
      if (is_android) {
        deps += [ "//chrome/browser/android/vr:vr_android_unittests" ]
-@@ -1090,7 +1079,7 @@ if (!is_ios) {
+@@ -1081,7 +1070,7 @@ if (!is_ios) {
        data_deps += [ "//content/web_test:web_test_common_mojom_js_data_deps" ]
      }
  
@@ -75,7 +75,7 @@
        data_deps +=
            [ "//third_party/breakpad:minidump_stackwalk($host_toolchain)" ]
      }
-@@ -1099,7 +1088,7 @@ if (!is_ios) {
+@@ -1090,7 +1079,7 @@ if (!is_ios) {
        data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ]
      }
  
@@ -84,7 +84,7 @@
        data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ]
      }
  
-@@ -1296,9 +1285,6 @@ group("chromium_builder_perf") {
+@@ -1315,9 +1304,6 @@ group("chromium_builder_perf") {
  
      if (is_win) {
        data_deps += [ "//chrome/installer/mini_installer:mini_installer" ]
diff --git a/devel/electron11/files/patch-apps_app__restore__service__browsertest.cc b/devel/electron12/files/patch-apps_app__restore__service__browsertest.cc
similarity index 100%
rename from devel/electron11/files/patch-apps_app__restore__service__browsertest.cc
rename to devel/electron12/files/patch-apps_app__restore__service__browsertest.cc
diff --git a/devel/electron12/files/patch-apps_ui_views_app__window__frame__view.cc b/devel/electron12/files/patch-apps_ui_views_app__window__frame__view.cc
new file mode 100644
index 0000000000000000000000000000000000000000..d473ad1320fdde53b83cb7d4215cf9f1fb1a87c2
--- /dev/null
+++ b/devel/electron12/files/patch-apps_ui_views_app__window__frame__view.cc
@@ -0,0 +1,11 @@
+--- apps/ui/views/app_window_frame_view.cc.orig	2021-04-14 01:08:35 UTC
++++ apps/ui/views/app_window_frame_view.cc
+@@ -137,7 +137,7 @@ gfx::Rect AppWindowFrameView::GetWindowBoundsForClient
+   gfx::Rect window_bounds = client_bounds;
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || defined(OS_BSD) || BUILDFLAG(IS_CHROMEOS_LACROS)
+   // Get the difference between the widget's client area bounds and window
+   // bounds, and grow |window_bounds| by that amount.
+   gfx::Insets native_frame_insets =
diff --git a/devel/electron11/files/patch-ash_display_mirror__window__controller.cc b/devel/electron12/files/patch-ash_display_mirror__window__controller.cc
similarity index 74%
rename from devel/electron11/files/patch-ash_display_mirror__window__controller.cc
rename to devel/electron12/files/patch-ash_display_mirror__window__controller.cc
index fd42fbe5286894751e31520c9b1f9d381a724091..637b11b17ef093093a6a732fa2711e166c752a1d 100644
--- a/devel/electron11/files/patch-ash_display_mirror__window__controller.cc
+++ b/devel/electron12/files/patch-ash_display_mirror__window__controller.cc
@@ -1,6 +1,6 @@
---- ash/display/mirror_window_controller.cc.orig	2021-01-07 00:36:17 UTC
+--- ash/display/mirror_window_controller.cc.orig	2021-04-14 01:08:35 UTC
 +++ ash/display/mirror_window_controller.cc
-@@ -275,7 +275,11 @@ void MirrorWindowController::UpdateWindow(
+@@ -286,7 +286,11 @@ void MirrorWindowController::UpdateWindow(
                           return info.id() == iter->first;
                         }) == display_info_list.end()) {
          CloseAndDeleteHost(iter->second, true);
diff --git a/devel/electron11/files/patch-base_BUILD.gn b/devel/electron12/files/patch-base_BUILD.gn
similarity index 54%
rename from devel/electron11/files/patch-base_BUILD.gn
rename to devel/electron12/files/patch-base_BUILD.gn
index 5a4d8ddc0855c0de3e00e7b7456a57b4498c9a35..c0e75e4af0a9f086341bd2abe74a04235db7f71d 100644
--- a/devel/electron11/files/patch-base_BUILD.gn
+++ b/devel/electron12/files/patch-base_BUILD.gn
@@ -1,15 +1,6 @@
---- base/BUILD.gn.orig	2021-01-07 00:36:18 UTC
+--- base/BUILD.gn.orig	2021-04-14 01:08:36 UTC
 +++ base/BUILD.gn
-@@ -53,7 +53,7 @@ declare_args() {
-   # replacement base::Location::Current(). On by default in non-official builds
-   # for testing purposes.
-   # TODO(https://crbug.com/974061): remove this eventually.
--  from_here_uses_location_builtins = !is_official_build
-+  from_here_uses_location_builtins = !is_official_build && !is_bsd
- 
-   # Unsafe developer build. Has developer-friendly features that may weaken or
-   # disable security measures like sandboxing or ASLR.
-@@ -878,7 +878,7 @@ component("base") {
+@@ -885,7 +885,7 @@ component("base") {
        "timer/hi_res_timer_manager_posix.cc",
      ]
  
@@ -18,7 +9,7 @@
        sources += [
          "cpu_affinity_posix.cc",
          "cpu_affinity_posix.h",
-@@ -889,6 +889,11 @@ component("base") {
+@@ -896,6 +896,11 @@ component("base") {
          "profiler/thread_delegate_posix.h",
        ]
      }
@@ -30,7 +21,7 @@
    }
  
    if (is_win) {
-@@ -1295,7 +1300,7 @@ component("base") {
+@@ -1301,7 +1306,7 @@ component("base") {
    # building inside the cros_sdk environment - use host_toolchain as a
    # more robust check for this.
    if (!use_sysroot &&
@@ -39,7 +30,7 @@
        host_toolchain != "//build/toolchain/cros:host") {
      libs += [ "atomic" ]
    }
-@@ -1342,7 +1347,7 @@ component("base") {
+@@ -1351,7 +1356,7 @@ component("base") {
            "allocator/allocator_shim_default_dispatch_to_mac_zoned_malloc.cc",
          ]
        }
@@ -48,16 +39,7 @@
          sources += [ "allocator/allocator_shim_default_dispatch_to_glibc.cc" ]
        }
        if (is_win) {
-@@ -1811,7 +1816,7 @@ component("base") {
-         ]
-       }
- 
--      if (is_linux || is_chromeos || is_android) {
-+      if ((is_linux || is_chromeos || is_android) && !is_bsd) {
-         sources += [
-           "allocator/partition_allocator/spinning_futex_linux.cc",
-           "allocator/partition_allocator/spinning_futex_linux.h",
-@@ -1956,6 +1961,34 @@ component("base") {
+@@ -1978,6 +1983,34 @@ component("base") {
      }
    }
  
@@ -72,9 +54,9 @@
 +      "system/sys_info_linux.cc"
 +    ]
 +    sources += [
++      "files/file_path_watcher_freebsd.cc",
 +      "files/file_path_watcher_kqueue.cc",
 +      "files/file_path_watcher_kqueue.h",
-+      "files/file_path_watcher_stub.cc",
 +      "process/memory_stubs.cc",
 +      "process/process_handle_freebsd.cc",
 +      "process/process_iterator_freebsd.cc",
@@ -92,21 +74,21 @@
    # iOS
    if (is_ios) {
      sources -= [
-@@ -3069,7 +3102,7 @@ test("base_unittests") {
-     ]
-   }
+@@ -3130,7 +3163,7 @@ if (build_base_unittests) {
+       }
+     }
  
--  if (is_linux || is_chromeos) {
-+  if ((is_linux || is_chromeos) && !is_bsd) {
-     sources += [ "debug/proc_maps_linux_unittest.cc" ]
-   }
+-    if (is_linux || is_chromeos) {
++    if ((is_linux || is_chromeos) && !is_bsd) {
+       sources += [ "debug/proc_maps_linux_unittest.cc" ]
+     }
  
-@@ -3110,7 +3143,7 @@ test("base_unittests") {
-       "posix/unix_domain_socket_unittest.cc",
-       "task/thread_pool/task_tracker_posix_unittest.cc",
-     ]
--    if (!is_nacl && !is_apple) {
-+    if (!is_nacl && !is_apple && !is_bsd) {
-       sources += [
-         "cpu_affinity_posix_unittest.cc",
-         "profiler/stack_copier_signal_unittest.cc",
+@@ -3171,7 +3204,7 @@ if (build_base_unittests) {
+         "posix/unix_domain_socket_unittest.cc",
+         "task/thread_pool/task_tracker_posix_unittest.cc",
+       ]
+-      if (!is_nacl && !is_apple) {
++      if (!is_nacl && !is_apple && !is_bsd) {
+         sources += [
+           "cpu_affinity_posix_unittest.cc",
+           "profiler/stack_copier_signal_unittest.cc",
diff --git a/devel/electron12/files/patch-base_allocator_allocator.gni b/devel/electron12/files/patch-base_allocator_allocator.gni
new file mode 100644
index 0000000000000000000000000000000000000000..20451134e6ee3bfedcb346b6e160e5afbe85640d
--- /dev/null
+++ b/devel/electron12/files/patch-base_allocator_allocator.gni
@@ -0,0 +1,11 @@
+--- base/allocator/allocator.gni.orig	2021-04-14 01:08:36 UTC
++++ base/allocator/allocator.gni
+@@ -58,7 +58,7 @@ declare_args() {
+   # not, and redesign or remove the flag accordingly.  We may want to assert a
+   # possible conflict between |use_allocator = "partition"| and
+   # |use_partition_alloc = true| rather than prioritizing use_partition_alloc.
+-  use_partition_alloc = !is_ios  # Never use PartitionAlloc on iOS.
++  use_partition_alloc = !is_ios # Never use PartitionAlloc on iOS.
+ }
+ 
+ if (!use_partition_alloc && use_allocator == "partition") {
diff --git a/devel/electron11/files/patch-base_allocator_allocator__shim__default__dispatch__to__glibc.cc b/devel/electron12/files/patch-base_allocator_allocator__shim__default__dispatch__to__glibc.cc
similarity index 100%
rename from devel/electron11/files/patch-base_allocator_allocator__shim__default__dispatch__to__glibc.cc
rename to devel/electron12/files/patch-base_allocator_allocator__shim__default__dispatch__to__glibc.cc
diff --git a/devel/electron11/files/patch-base_allocator_allocator__shim__override__libc__symbols.h b/devel/electron12/files/patch-base_allocator_allocator__shim__override__libc__symbols.h
similarity index 62%
rename from devel/electron11/files/patch-base_allocator_allocator__shim__override__libc__symbols.h
rename to devel/electron12/files/patch-base_allocator_allocator__shim__override__libc__symbols.h
index 02fde87e6ceefe6677d8bcce8ab12375d75cff23..6643e1d844946368895b24522e680398105e44c4 100644
--- a/devel/electron11/files/patch-base_allocator_allocator__shim__override__libc__symbols.h
+++ b/devel/electron12/files/patch-base_allocator_allocator__shim__override__libc__symbols.h
@@ -1,11 +1,13 @@
---- base/allocator/allocator_shim_override_libc_symbols.h.orig	2021-01-07 00:36:18 UTC
+--- base/allocator/allocator_shim_override_libc_symbols.h.orig	2021-04-14 01:08:36 UTC
 +++ base/allocator/allocator_shim_override_libc_symbols.h
-@@ -10,7 +10,7 @@
+@@ -16,6 +16,10 @@
+ #include <malloc.h>
  #endif
- #define BASE_ALLOCATOR_ALLOCATOR_SHIM_OVERRIDE_LIBC_SYMBOLS_H_
  
--#include <malloc.h>
++#if defined(OS_BSD)
 +#include <stdlib.h>
- 
++#endif
++
  #include "base/allocator/allocator_shim_internals.h"
  
+ extern "C" {
diff --git a/devel/electron11/files/patch-base_allocator_allocator__shim__unittest.cc b/devel/electron12/files/patch-base_allocator_allocator__shim__unittest.cc
similarity index 73%
rename from devel/electron11/files/patch-base_allocator_allocator__shim__unittest.cc
rename to devel/electron12/files/patch-base_allocator_allocator__shim__unittest.cc
index 6673119334538f601a649474bdfcd151c6951159..ac994c5ac536d94b4da050435eb46d9a017b0c11 100644
--- a/devel/electron11/files/patch-base_allocator_allocator__shim__unittest.cc
+++ b/devel/electron12/files/patch-base_allocator_allocator__shim__unittest.cc
@@ -1,6 +1,6 @@
---- base/allocator/allocator_shim_unittest.cc.orig	2021-01-07 00:36:18 UTC
+--- base/allocator/allocator_shim_unittest.cc.orig	2021-04-14 01:08:36 UTC
 +++ base/allocator/allocator_shim_unittest.cc
-@@ -367,7 +367,7 @@ TEST_F(AllocatorShimTest, InterceptLibcSymbols) {
+@@ -369,7 +369,7 @@ TEST_F(AllocatorShimTest, InterceptLibcSymbols) {
  
  #endif  // !OS_WIN
  
@@ -9,7 +9,7 @@
    void* memalign_ptr = memalign(128, 53);
    ASSERT_NE(nullptr, memalign_ptr);
    ASSERT_EQ(0u, reinterpret_cast<uintptr_t>(memalign_ptr) % 128);
-@@ -383,7 +383,7 @@ TEST_F(AllocatorShimTest, InterceptLibcSymbols) {
+@@ -385,7 +385,7 @@ TEST_F(AllocatorShimTest, InterceptLibcSymbols) {
    ASSERT_GE(aligned_allocs_intercepted_by_size[kPageSize], 1u);
  #endif  // !defined(OS_ANDROID)
  
@@ -18,7 +18,7 @@
  
  // See allocator_shim_override_glibc_weak_symbols.h for why we intercept
  // internal libc symbols.
-@@ -410,7 +410,7 @@ TEST_F(AllocatorShimTest, InterceptLibcSymbols) {
+@@ -412,7 +412,7 @@ TEST_F(AllocatorShimTest, InterceptLibcSymbols) {
    free(zero_alloc_ptr);
    ASSERT_GE(frees_intercepted_by_addr[Hash(zero_alloc_ptr)], 1u);
  
@@ -27,7 +27,7 @@
    free(memalign_ptr);
    ASSERT_GE(frees_intercepted_by_addr[Hash(memalign_ptr)], 1u);
  
-@@ -419,7 +419,7 @@ TEST_F(AllocatorShimTest, InterceptLibcSymbols) {
+@@ -421,7 +421,7 @@ TEST_F(AllocatorShimTest, InterceptLibcSymbols) {
    ASSERT_GE(frees_intercepted_by_addr[Hash(pvalloc_ptr)], 1u);
  #endif  // !defined(OS_ANDROID)
  
@@ -36,12 +36,12 @@
  
  #if !defined(OS_WIN)
    free(posix_memalign_ptr);
-@@ -595,7 +595,7 @@ static size_t GetAllocatedSize(void* ptr) {
- static size_t GetAllocatedSize(void* ptr) {
+@@ -614,7 +614,7 @@ static size_t GetUsableSize(void* ptr) {
+ static size_t GetUsableSize(void* ptr) {
    return malloc_size(ptr);
  }
 -#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
 +#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
- static size_t GetAllocatedSize(void* ptr) {
+ static size_t GetUsableSize(void* ptr) {
    return malloc_usable_size(ptr);
  }
diff --git a/devel/electron12/files/patch-base_allocator_partition__allocator_address__pool__manager.cc b/devel/electron12/files/patch-base_allocator_partition__allocator_address__pool__manager.cc
new file mode 100644
index 0000000000000000000000000000000000000000..404e346613c431d2fdbd217bc2c3bd89f6d90ef2
--- /dev/null
+++ b/devel/electron12/files/patch-base_allocator_partition__allocator_address__pool__manager.cc
@@ -0,0 +1,31 @@
+--- base/allocator/partition_allocator/address_pool_manager.cc.orig	2021-04-14 01:08:36 UTC
++++ base/allocator/partition_allocator/address_pool_manager.cc
+@@ -8,6 +8,13 @@
+ #include <sys/mman.h>
+ #endif
+ 
++#if defined(OS_FREEBSD)
++#include <sys/mman.h>
++#include <fcntl.h>
++
++#include "base/posix/eintr_wrapper.h"
++#endif
++
+ #include <algorithm>
+ #include <limits>
+ 
+@@ -50,6 +57,14 @@ void DecommitPages(void* address, size_t size) {
+   void* ptr = mmap(address, size, PROT_NONE,
+                    MAP_FIXED | MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
+   PA_CHECK(ptr == address);
++#elif defined(OS_FREEBSD)
++  int fd = HANDLE_EINTR(open("/dev/zero", O_RDONLY));
++  PA_CHECK(fd != -1);
++
++  void *ptr = mmap(address, size, PROT_NONE,
++                   MAP_FIXED | MAP_PRIVATE, fd, 0);
++  PA_PCHECK(ptr == address);
++  HANDLE_EINTR(close(fd));
+ #else
+   DecommitSystemPages(address, size, PageUpdatePermissions);
+ #endif
diff --git a/devel/electron12/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h b/devel/electron12/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h
new file mode 100644
index 0000000000000000000000000000000000000000..659699c040f5dd1fb1174110fe948460fe59b353
--- /dev/null
+++ b/devel/electron12/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h
@@ -0,0 +1,58 @@
+--- base/allocator/partition_allocator/page_allocator_internals_posix.h.orig	2021-04-14 01:08:36 UTC
++++ base/allocator/partition_allocator/page_allocator_internals_posix.h
+@@ -27,12 +27,16 @@
+ #if defined(OS_ANDROID)
+ #include <sys/prctl.h>
+ #endif
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include <sys/resource.h>
+ 
+ #include <algorithm>
+ #endif
+ 
++#if defined(OS_FREEBSD)
++#include <fcntl.h>
++#endif
++
+ #include "base/allocator/partition_allocator/page_allocator.h"
+ 
+ #ifndef MAP_ANONYMOUS
+@@ -168,12 +172,19 @@ void* SystemAllocPagesInternal(void* hint,
+   PA_DCHECK(PageTag::kFirst <= page_tag);
+   PA_DCHECK(PageTag::kLast >= page_tag);
+   int fd = VM_MAKE_TAG(static_cast<int>(page_tag));
++#elif defined(OS_FREEBSD)
++  int fd = HANDLE_EINTR(open("/dev/zero", O_RDWR | O_CLOEXEC));
++  PA_PCHECK(fd != -1);
+ #else
+   int fd = -1;
+ #endif
+ 
+   int access_flag = GetAccessFlags(accessibility);
++#if defined(OS_FREEBSD)
++  int map_flags = MAP_PRIVATE;
++#else
+   int map_flags = MAP_ANONYMOUS | MAP_PRIVATE;
++#endif
+ 
+ #if defined(OS_APPLE)
+   // On macOS 10.14 and higher, executables that are code signed with the
+@@ -200,6 +211,8 @@ void* SystemAllocPagesInternal(void* hint,
+     prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, ret, length,
+           PageTagToName(page_tag));
+   }
++#elif defined(OS_FREEBSD)
++  HANDLE_EINTR(close(fd));
+ #endif
+ 
+   return ret;
+@@ -294,6 +307,8 @@ void DiscardSystemPagesInternal(void* address, size_t 
+     ret = madvise(address, length, MADV_DONTNEED);
+   }
+   PA_PCHECK(ret == 0);
++#elif defined(OS_FREEBSD)
++  PA_PCHECK(0 == madvise(address, length, MADV_FREE));
+ #else
+   // We have experimented with other flags, but with suboptimal results.
+   //
diff --git a/devel/electron11/files/patch-base_allocator_partition__allocator_partition__alloc.cc b/devel/electron12/files/patch-base_allocator_partition__allocator_partition__alloc.cc
similarity index 53%
rename from devel/electron11/files/patch-base_allocator_partition__allocator_partition__alloc.cc
rename to devel/electron12/files/patch-base_allocator_partition__allocator_partition__alloc.cc
index 10970bed344dbeced0038aedd41bf5e103e73d18..502e3f0b00e3bbb6b8b9c3592a2f9e7303786dd5 100644
--- a/devel/electron11/files/patch-base_allocator_partition__allocator_partition__alloc.cc
+++ b/devel/electron12/files/patch-base_allocator_partition__allocator_partition__alloc.cc
@@ -1,12 +1,15 @@
---- base/allocator/partition_allocator/partition_alloc.cc.orig	2021-01-07 00:36:18 UTC
+--- base/allocator/partition_allocator/partition_alloc.cc.orig	2021-04-14 01:08:36 UTC
 +++ base/allocator/partition_allocator/partition_alloc.cc
-@@ -197,6 +197,9 @@ void PartitionAllocGlobalInit(OomFunction on_out_of_me
+@@ -56,7 +56,12 @@ void PartitionAllocGlobalInit(OomFunction on_out_of_me
+       "maximum direct mapped allocation");
+ 
    // Check that some of our zanier calculations worked out as expected.
- #if ENABLE_TAG_FOR_MTE_CHECKED_PTR
-   static_assert(kSmallestBucket >= kAlignment, "generic smallest bucket");
-+#elif defined(__i386__) && defined(OS_FREEBSD)
++#if defined(__i386__) && defined(OS_FREEBSD)
 +  // alignof(std::max_align_t) is only 4 on FreeBSD/i386
 +  static_assert(kSmallestBucket >= kAlignment, "generic smallest bucket");
- #else
++#else
    static_assert(kSmallestBucket == kAlignment, "generic smallest bucket");
- #endif
++#endif
+   static_assert(kMaxBucketed == 983040, "generic max bucketed");
+   STATIC_ASSERT_OR_PA_CHECK(
+       MaxSystemPagesPerSlotSpan() < (1 << 8),
diff --git a/devel/electron12/files/patch-base_allocator_partition__allocator_partition__alloc__unittest.cc b/devel/electron12/files/patch-base_allocator_partition__allocator_partition__alloc__unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..90f198c246056983b69e1450cae3879a02cb191e
--- /dev/null
+++ b/devel/electron12/files/patch-base_allocator_partition__allocator_partition__alloc__unittest.cc
@@ -0,0 +1,20 @@
+--- base/allocator/partition_allocator/partition_alloc_unittest.cc.orig	2021-04-14 01:08:36 UTC
++++ base/allocator/partition_allocator/partition_alloc_unittest.cc
+@@ -1588,7 +1588,7 @@ TEST_F(PartitionAllocTest, LostFreeSlotSpansBug) {
+ // cause flake.
+ #if !defined(OS_WIN) &&            \
+     (!defined(ARCH_CPU_64_BITS) || \
+-     (defined(OS_POSIX) && !(defined(OS_APPLE) || defined(OS_ANDROID))))
++     (defined(OS_POSIX) && !(defined(OS_APPLE) || defined(OS_ANDROID) || defined(OS_BSD))))
+ 
+ // The following four tests wrap a called function in an expect death statement
+ // to perform their test, because they are non-hermetic. Specifically they are
+@@ -1634,7 +1634,7 @@ TEST_F(PartitionAllocDeathTest, RepeatedTryReallocRetu
+ }
+ 
+ #endif  // !defined(ARCH_CPU_64_BITS) || (defined(OS_POSIX) &&
+-        // !(defined(OS_APPLE) || defined(OS_ANDROID)))
++        // !(defined(OS_APPLE) || defined(OS_ANDROID) || defined(OS_BSD)))
+ 
+ // Make sure that malloc(-1) dies.
+ // In the past, we had an integer overflow that would alias malloc(-1) to
diff --git a/devel/electron12/files/patch-base_allocator_partition__allocator_partition__bucket.cc b/devel/electron12/files/patch-base_allocator_partition__allocator_partition__bucket.cc
new file mode 100644
index 0000000000000000000000000000000000000000..5d09ec9e1147d11aa5e0b952ff06447b00fa9ecf
--- /dev/null
+++ b/devel/electron12/files/patch-base_allocator_partition__allocator_partition__bucket.cc
@@ -0,0 +1,36 @@
+--- base/allocator/partition_allocator/partition_bucket.cc.orig	2021-04-14 01:08:36 UTC
++++ base/allocator/partition_allocator/partition_bucket.cc
+@@ -66,27 +66,33 @@ PartitionDirectMap(PartitionRoot<thread_safe>* root, i
+   metadata->extent.root = root;
+   // The new structures are all located inside a fresh system page so they
+   // will all be zeroed out. These DCHECKs are for documentation.
++#if !defined(OS_FREEBSD)
+   PA_DCHECK(!metadata->extent.super_page_base);
+   PA_DCHECK(!metadata->extent.super_pages_end);
+   PA_DCHECK(!metadata->extent.next);
++#endif
+   PA_DCHECK(PartitionPage<thread_safe>::FromPointerNoAlignmentCheck(slot) ==
+             &metadata->page);
+ 
+   auto* page = &metadata->page;
++#if !defined(OS_FREEBSD)
+   PA_DCHECK(!page->slot_span_metadata_offset);
+   PA_DCHECK(!page->slot_span_metadata.next_slot_span);
+   PA_DCHECK(!page->slot_span_metadata.num_allocated_slots);
+   PA_DCHECK(!page->slot_span_metadata.num_unprovisioned_slots);
+   PA_DCHECK(!page->slot_span_metadata.empty_cache_index);
++#endif
+   page->slot_span_metadata.bucket = &metadata->bucket;
+   auto* next_entry = new (slot) PartitionFreelistEntry();
+   page->slot_span_metadata.SetFreelistHead(next_entry);
+ 
++#if !defined(OS_FREEBSD)
+   PA_DCHECK(!metadata->bucket.active_slot_spans_head);
+   PA_DCHECK(!metadata->bucket.empty_slot_spans_head);
+   PA_DCHECK(!metadata->bucket.decommitted_slot_spans_head);
+   PA_DCHECK(!metadata->bucket.num_system_pages_per_slot_span);
+   PA_DCHECK(!metadata->bucket.num_full_slot_spans);
++#endif
+   metadata->bucket.slot_size = slot_size;
+ 
+   auto* map_extent = &metadata->direct_map_extent;
diff --git a/devel/electron12/files/patch-base_allocator_partition__allocator_spinning__mutex.cc b/devel/electron12/files/patch-base_allocator_partition__allocator_spinning__mutex.cc
new file mode 100644
index 0000000000000000000000000000000000000000..4dc4831a8cf0d127020216212a2700f06a7c3b6f
--- /dev/null
+++ b/devel/electron12/files/patch-base_allocator_partition__allocator_spinning__mutex.cc
@@ -0,0 +1,49 @@
+--- base/allocator/partition_allocator/spinning_mutex.cc.orig	2021-04-14 01:08:36 UTC
++++ base/allocator/partition_allocator/spinning_mutex.cc
+@@ -16,9 +16,16 @@
+ #include <unistd.h>
+ #endif  // defined(PA_HAS_LINUX_KERNEL)
+ 
++#if defined(PA_HAS_FREEBSD_KERNEL)
++#include <errno.h>
++#include <sys/types.h>
++#include <sys/thr.h>
++#include <sys/umtx.h>
++#endif // defined(PA_HAS_FREEBSD_KERNEL)
++
+ namespace base {
+ namespace internal {
+-#if defined(PA_HAS_LINUX_KERNEL)
++#if defined(PA_HAS_LINUX_KERNEL) || defined(PA_HAS_FREEBSD_KERNEL)
+ 
+ void SpinningMutex::FutexWait() {
+   // Save and restore errno.
+@@ -42,8 +49,13 @@ void SpinningMutex::FutexWait() {
+   // |kLockedContended| anymore. Note that even without spurious wakeups, the
+   // value of |state_| is not guaranteed when this returns, as another thread
+   // may get the lock before we get to run.
++#if defined(PA_HAS_LINUX_KERNEL)
+   int err = syscall(SYS_futex, &state_, FUTEX_WAIT | FUTEX_PRIVATE_FLAG,
+                     kLockedContended, nullptr, nullptr, 0);
++#elif defined(PA_HAS_FREEBSD_KERNEL)
++  int err = _umtx_op(&state_, UMTX_OP_WAIT_UINT_PRIVATE,
++		     kLockedContended, nullptr, nullptr);
++#endif
+ 
+   if (err) {
+     // These are programming error, check them.
+@@ -55,8 +67,14 @@ void SpinningMutex::FutexWait() {
+ 
+ void SpinningMutex::FutexWake() {
+   int saved_errno = errno;
++#if defined(PA_HAS_LINUX_KERNEL)
+   long retval = syscall(SYS_futex, &state_, FUTEX_WAKE | FUTEX_PRIVATE_FLAG,
+                         1 /* wake up a single waiter */, nullptr, nullptr, 0);
++#elif defined(PA_HAS_FREEBSD_KERNEL)
++  long retval = _umtx_op(&state_, UMTX_OP_WAKE_PRIVATE,
++                         1 /* wake up a single waiter */, nullptr, nullptr);
++#endif
++		      
+   PA_CHECK(retval != -1);
+   errno = saved_errno;
+ }
diff --git a/devel/electron12/files/patch-base_allocator_partition__allocator_spinning__mutex.h b/devel/electron12/files/patch-base_allocator_partition__allocator_spinning__mutex.h
new file mode 100644
index 0000000000000000000000000000000000000000..34c4106611212c92a2a73f47b557a92f3707277d
--- /dev/null
+++ b/devel/electron12/files/patch-base_allocator_partition__allocator_spinning__mutex.h
@@ -0,0 +1,33 @@
+--- base/allocator/partition_allocator/spinning_mutex.h.orig	2021-04-14 01:08:36 UTC
++++ base/allocator/partition_allocator/spinning_mutex.h
+@@ -22,7 +22,11 @@
+ #define PA_HAS_LINUX_KERNEL
+ #endif
+ 
+-#if defined(PA_HAS_LINUX_KERNEL) || defined(OS_WIN)
++#if defined(OS_FREEBSD)
++#define PA_HAS_FREEBSD_KERNEL
++#endif
++
++#if defined(PA_HAS_LINUX_KERNEL) || defined(PA_HAS_FREEBSD_KERNEL) || defined(OS_WIN)
+ #define PA_HAS_SPINNING_MUTEX
+ #endif
+ 
+@@ -66,7 +70,7 @@ class LOCKABLE BASE_EXPORT SpinningMutex {
+   // as the slow path has better characteristics than SpinLocks's.
+   static constexpr int kSpinCount = 1000;
+ 
+-#if defined(PA_HAS_LINUX_KERNEL)
++#if defined(PA_HAS_LINUX_KERNEL) || defined(PA_HAS_FREEBSD_KERNEL)
+   void FutexWait();
+   void FutexWake();
+ 
+@@ -111,7 +115,7 @@ ALWAYS_INLINE void SpinningMutex::Acquire() {
+ 
+ inline constexpr SpinningMutex::SpinningMutex() = default;
+ 
+-#if defined(PA_HAS_LINUX_KERNEL)
++#if defined(PA_HAS_LINUX_KERNEL) || defined(PA_HAS_FREEBSD_KERNEL)
+ 
+ ALWAYS_INLINE bool SpinningMutex::Try() {
+   int expected = kUnlocked;
diff --git a/devel/electron12/files/patch-base_base__switches.cc b/devel/electron12/files/patch-base_base__switches.cc
new file mode 100644
index 0000000000000000000000000000000000000000..5b389821860958c8215f78017192846c8706e192
--- /dev/null
+++ b/devel/electron12/files/patch-base_base__switches.cc
@@ -0,0 +1,22 @@
+--- base/base_switches.cc.orig	2021-04-14 01:08:36 UTC
++++ base/base_switches.cc
+@@ -120,8 +120,8 @@ const char kDisableUsbKeyboardDetect[]      = "disable
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_ASH) && \
+-    !BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_BSD) || (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_ASH) && \
++    !BUILDFLAG(IS_CHROMEOS_LACROS))
+ // The /dev/shm partition is too small in certain VM environments, causing
+ // Chrome to fail or crash (see http://crbug.com/715363). Use this flag to
+ // work-around this issue (a temporary directory will always be used to create
+@@ -156,7 +156,7 @@ const char kForceFieldTrialParams[] = "force-fieldtria
+ 
+ #endif
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Controls whether or not retired instruction counts are surfaced for threads
+ // in trace events on Linux.
+ //
diff --git a/devel/electron12/files/patch-base_base__switches.h b/devel/electron12/files/patch-base_base__switches.h
new file mode 100644
index 0000000000000000000000000000000000000000..ad3f09a7b8bd384010a89acd4248019174080fe3
--- /dev/null
+++ b/devel/electron12/files/patch-base_base__switches.h
@@ -0,0 +1,22 @@
+--- base/base_switches.h.orig	2021-04-14 01:08:36 UTC
++++ base/base_switches.h
+@@ -41,8 +41,8 @@ extern const char kDisableUsbKeyboardDetect[];
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_ASH) && \
+-    !BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_BSD) || (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_ASH) && \
++    !BUILDFLAG(IS_CHROMEOS_LACROS))
+ extern const char kDisableDevShmUsage[];
+ #endif
+ 
+@@ -58,7 +58,7 @@ extern const char kEnableIdleTracing[];
+ extern const char kForceFieldTrialParams[];
+ #endif
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ extern const char kEnableThreadInstructionCount[];
+ #endif
+ 
diff --git a/devel/electron11/files/patch-base_cpu.cc b/devel/electron12/files/patch-base_cpu.cc
similarity index 53%
rename from devel/electron11/files/patch-base_cpu.cc
rename to devel/electron12/files/patch-base_cpu.cc
index 48c795120ce8673f2366116c773a7f26f067a2b1..2d57eda9171419fd20a8f144020d58292aa6e37b 100644
--- a/devel/electron11/files/patch-base_cpu.cc
+++ b/devel/electron12/files/patch-base_cpu.cc
@@ -1,4 +1,4 @@
---- base/cpu.cc.orig	2021-01-07 00:36:18 UTC
+--- base/cpu.cc.orig	2021-04-14 01:08:36 UTC
 +++ base/cpu.cc
 @@ -16,7 +16,7 @@
  
@@ -9,18 +9,9 @@
      defined(OS_AIX)
  #include "base/containers/flat_set.h"
  #include "base/files/file_util.h"
-@@ -31,7 +31,7 @@
- #endif
- 
- #if defined(ARCH_CPU_ARM_FAMILY) && \
--    (defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS))
-+    (defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)) 
- #include "base/files/file_util.h"
- #endif
+@@ -212,6 +212,14 @@ const ProcCpuInfo& ParseProcCpu() {
  
-@@ -182,6 +182,14 @@ std::string* CpuInfoBrand() {
- 
-   return brand;
+   return *info;
  }
 +#elif defined(OS_BSD)
 +std::string* CpuInfoBrand() {
@@ -33,12 +24,12 @@
  #endif  // defined(ARCH_CPU_ARM_FAMILY) && (defined(OS_ANDROID) ||
          // defined(OS_LINUX) || defined(OS_CHROMEOS))
  
-@@ -305,7 +313,7 @@ void CPU::Initialize() {
-     }
-   }
- #elif defined(ARCH_CPU_ARM_FAMILY)
--#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
-   cpu_brand_ = *CpuInfoBrand();
+@@ -348,6 +356,8 @@ void CPU::Initialize() {
+   has_bti_ = hwcap2 & HWCAP2_BTI;
+ #endif
+ 
++#elif defined(OS_BSD)
++  cpu_brand_ = *CpuInfoBrand();
  #elif defined(OS_WIN)
    // Windows makes high-resolution thread timing information available in
+   // user-space.
diff --git a/devel/electron11/files/patch-base_cpu.h b/devel/electron12/files/patch-base_cpu.h
similarity index 83%
rename from devel/electron11/files/patch-base_cpu.h
rename to devel/electron12/files/patch-base_cpu.h
index 51637a45b09dc441354afe38caf846f0f44b73ba..0fcb12b6e4a546b2b2136c51dbc2270f321dd7d4 100644
--- a/devel/electron11/files/patch-base_cpu.h
+++ b/devel/electron12/files/patch-base_cpu.h
@@ -1,6 +1,6 @@
---- base/cpu.h.orig	2021-01-07 00:36:18 UTC
+--- base/cpu.h.orig	2021-04-14 01:08:36 UTC
 +++ base/cpu.h
-@@ -73,7 +73,7 @@ class BASE_EXPORT CPU final {
+@@ -84,7 +84,7 @@ class BASE_EXPORT CPU final {
    IntelMicroArchitecture GetIntelMicroArchitecture() const;
    const std::string& cpu_brand() const { return cpu_brand_; }
  
@@ -9,7 +9,7 @@
      defined(OS_AIX)
    enum class CoreType {
      kUnknown = 0,
-@@ -124,7 +124,7 @@ class BASE_EXPORT CPU final {
+@@ -135,7 +135,7 @@ class BASE_EXPORT CPU final {
    // cpuidle driver.
    using CoreIdleTimes = std::vector<TimeDelta>;
    static bool GetCumulativeCoreIdleTimes(CoreIdleTimes&);
diff --git a/devel/electron11/files/patch-base_debug_debugger__posix.cc b/devel/electron12/files/patch-base_debug_debugger__posix.cc
similarity index 100%
rename from devel/electron11/files/patch-base_debug_debugger__posix.cc
rename to devel/electron12/files/patch-base_debug_debugger__posix.cc
diff --git a/devel/electron11/files/patch-base_debug_elf__reader.cc b/devel/electron12/files/patch-base_debug_elf__reader.cc
similarity index 100%
rename from devel/electron11/files/patch-base_debug_elf__reader.cc
rename to devel/electron12/files/patch-base_debug_elf__reader.cc
diff --git a/devel/electron11/files/patch-base_debug_proc__maps__linux.cc b/devel/electron12/files/patch-base_debug_proc__maps__linux.cc
similarity index 83%
rename from devel/electron11/files/patch-base_debug_proc__maps__linux.cc
rename to devel/electron12/files/patch-base_debug_proc__maps__linux.cc
index 3c5a2d29f01344aa4078aca240b968ba3d931e70..67a023f2e5af23fab92f5b4383529ac2a26bc83b 100644
--- a/devel/electron11/files/patch-base_debug_proc__maps__linux.cc
+++ b/devel/electron12/files/patch-base_debug_proc__maps__linux.cc
@@ -1,6 +1,6 @@
---- base/debug/proc_maps_linux.cc.orig	2021-01-07 00:36:18 UTC
+--- base/debug/proc_maps_linux.cc.orig	2021-04-14 01:08:36 UTC
 +++ base/debug/proc_maps_linux.cc
-@@ -13,7 +13,7 @@
+@@ -13,13 +13,18 @@
  #include "base/strings/string_split.h"
  #include "build/build_config.h"
  
@@ -9,7 +9,6 @@
  #include <inttypes.h>
  #endif
  
-@@ -29,6 +29,11 @@
  namespace base {
  namespace debug {
  
@@ -21,7 +20,7 @@
  // Scans |proc_maps| starting from |pos| returning true if the gate VMA was
  // found, otherwise returns false.
  static bool ContainsGateVMA(std::string* proc_maps, size_t pos) {
-@@ -44,15 +49,16 @@ static bool ContainsGateVMA(std::string* proc_maps, si
+@@ -35,15 +40,16 @@ static bool ContainsGateVMA(std::string* proc_maps, si
    return false;
  #endif
  }
@@ -40,7 +39,7 @@
      return false;
    }
    proc_maps->clear();
-@@ -66,7 +72,7 @@ bool ReadProcMaps(std::string* proc_maps) {
+@@ -57,7 +63,7 @@ bool ReadProcMaps(std::string* proc_maps) {
  
      ssize_t bytes_read = HANDLE_EINTR(read(fd.get(), buffer, kReadSize));
      if (bytes_read < 0) {
@@ -49,7 +48,7 @@
        proc_maps->clear();
        return false;
      }
-@@ -77,6 +83,7 @@ bool ReadProcMaps(std::string* proc_maps) {
+@@ -68,6 +74,7 @@ bool ReadProcMaps(std::string* proc_maps) {
      if (bytes_read == 0)
        break;
  
@@ -57,7 +56,7 @@
      // The gate VMA is handled as a special case after seq_file has finished
      // iterating through all entries in the virtual memory table.
      //
-@@ -87,6 +94,7 @@ bool ReadProcMaps(std::string* proc_maps) {
+@@ -78,6 +85,7 @@ bool ReadProcMaps(std::string* proc_maps) {
      // Avoid this by searching for the gate VMA and breaking early.
      if (ContainsGateVMA(proc_maps, pos))
        break;
@@ -65,17 +64,18 @@
    }
  
    return true;
-@@ -115,10 +123,32 @@ bool ParseProcMaps(const std::string& input,
+@@ -105,11 +113,32 @@ bool ParseProcMaps(const std::string& input,
+ 
      MappedMemoryRegion region;
      const char* line = lines[i].c_str();
-     char permissions[5] = {'\0'};  // Ensure NUL-terminated string.
+-    char permissions[5] = {'\0'};  // Ensure NUL-terminated string.
++    char permissions[6] = {'\0'};  // Ensure NUL-terminated string.
 +    int path_index = 0;
 +
 +#if defined(OS_BSD)
 +    if (lines[i].empty())
 +      continue;
 +
-+
 +    char cow;
 +
 +    // Format:
@@ -83,7 +83,7 @@
 +    // start    end      resident private_resident obj                perms ref_count shadow_count flags  cow needs_copy type  fullpath cred ruid
 +    // 0x200000 0x202000 2        6                0xfffff80005be9000 r--   3         1            0x1000 COW NC         vnode /bin/cat NCH  -1
 +    //
-+    if (sscanf(line, "%" SCNxPTR " %" SCNxPTR " %*ld %*ld %*llx %3c %*d %*d %*x %c%*s %*s %*s %n",
++    if (sscanf(line, "%" SCNxPTR " %" SCNxPTR " %*ld %*ld %*[^ ] %5[^ ] %*d %*d %*x %c%*s %*s %*s %n",
 +	       &region.start, &region.end, permissions, &cow, &path_index) < 4) {
 +      DPLOG(WARNING) << "sscanf failed for line: " << line;
 +      return false;
@@ -99,7 +99,7 @@
  
      // Sample format from man 5 proc:
      //
-@@ -134,6 +164,7 @@ bool ParseProcMaps(const std::string& input,
+@@ -125,6 +154,7 @@ bool ParseProcMaps(const std::string& input,
        DPLOG(WARNING) << "sscanf failed for line: " << line;
        return false;
      }
@@ -107,7 +107,7 @@
  
      region.permissions = 0;
  
-@@ -152,14 +183,31 @@ bool ParseProcMaps(const std::string& input,
+@@ -143,14 +173,31 @@ bool ParseProcMaps(const std::string& input,
      else if (permissions[2] != '-')
        return false;
  
diff --git a/devel/electron11/files/patch-base_debug_stack__trace.cc b/devel/electron12/files/patch-base_debug_stack__trace.cc
similarity index 100%
rename from devel/electron11/files/patch-base_debug_stack__trace.cc
rename to devel/electron12/files/patch-base_debug_stack__trace.cc
diff --git a/devel/electron11/files/patch-base_debug_stack__trace.h b/devel/electron12/files/patch-base_debug_stack__trace.h
similarity index 100%
rename from devel/electron11/files/patch-base_debug_stack__trace.h
rename to devel/electron12/files/patch-base_debug_stack__trace.h
diff --git a/devel/electron12/files/patch-base_debug_stack__trace__posix.cc b/devel/electron12/files/patch-base_debug_stack__trace__posix.cc
new file mode 100644
index 0000000000000000000000000000000000000000..7ff121c882b34c02e125d9308cef824ebd37ecfd
--- /dev/null
+++ b/devel/electron12/files/patch-base_debug_stack__trace__posix.cc
@@ -0,0 +1,45 @@
+--- base/debug/stack_trace_posix.cc.orig	2021-04-14 01:08:36 UTC
++++ base/debug/stack_trace_posix.cc
+@@ -35,7 +35,7 @@
+ #include <AvailabilityMacros.h>
+ #endif
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "base/debug/proc_maps_linux.h"
+ #endif
+ 
+@@ -659,13 +659,21 @@ class SandboxSymbolizeHelper {
+     // Reads /proc/self/maps.
+     std::string contents;
+     if (!ReadProcMaps(&contents)) {
++#if defined(OS_BSD)
++      LOG(ERROR) << "Failed to read /proc/curproc/map";
++#else
+       LOG(ERROR) << "Failed to read /proc/self/maps";
++#endif
+       return false;
+     }
+ 
+     // Parses /proc/self/maps.
+     if (!ParseProcMaps(contents, &regions_)) {
++#if defined(OS_BSD)
++      LOG(ERROR) << "Failed to parse the contents of /proc/curproc/map";
++#else
+       LOG(ERROR) << "Failed to parse the contents of /proc/self/maps";
++#endif
+       return false;
+     }
+ 
+@@ -696,7 +704,11 @@ class SandboxSymbolizeHelper {
+           // Skip regions with empty file names.
+           continue;
+         }
++#if defined(OS_BSD)
++	if (region.path[0] == '-') {
++#else	
+         if (region.path[0] == '[') {
++#endif
+           // Skip pseudo-paths, like [stack], [vdso], [heap], etc ...
+           continue;
+         }
diff --git a/devel/electron11/files/patch-base_debug_stack__trace__unittest.cc b/devel/electron12/files/patch-base_debug_stack__trace__unittest.cc
similarity index 72%
rename from devel/electron11/files/patch-base_debug_stack__trace__unittest.cc
rename to devel/electron12/files/patch-base_debug_stack__trace__unittest.cc
index a9197d909df3262d314d08f83b5f1290a94f1e0c..74aa2e122db11870897f7ea4a9092ca0e75740e4 100644
--- a/devel/electron11/files/patch-base_debug_stack__trace__unittest.cc
+++ b/devel/electron12/files/patch-base_debug_stack__trace__unittest.cc
@@ -1,4 +1,4 @@
---- base/debug/stack_trace_unittest.cc.orig	2021-01-07 00:36:18 UTC
+--- base/debug/stack_trace_unittest.cc.orig	2021-04-14 01:08:36 UTC
 +++ base/debug/stack_trace_unittest.cc
 @@ -88,6 +88,7 @@ TEST_F(StackTraceTest, OutputToStream) {
              std::string::npos)
@@ -29,3 +29,12 @@
  
  // The test is used for manual testing, e.g., to see the raw output.
  TEST_F(StackTraceTest, DebugOutputToStream) {
+@@ -361,7 +363,7 @@ TEST_F(StackTraceTest, MAYBE_TraceStackFramePointers) 
+ // sometimes we read fp / pc from the place that previously held
+ // uninitialized value.
+ // TODO(crbug.com/1132511): Enable this test on Fuchsia.
+-#if defined(MEMORY_SANITIZER) || defined(OS_FUCHSIA)
++#if defined(MEMORY_SANITIZER) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ #define MAYBE_TraceStackFramePointersFromBuffer \
+   DISABLED_TraceStackFramePointersFromBuffer
+ #else
diff --git a/devel/electron11/files/patch-base_files_file__path__unittest.cc b/devel/electron12/files/patch-base_files_file__path__unittest.cc
similarity index 100%
rename from devel/electron11/files/patch-base_files_file__path__unittest.cc
rename to devel/electron12/files/patch-base_files_file__path__unittest.cc
diff --git a/devel/electron12/files/patch-base_files_file__path__watcher__freebsd.cc b/devel/electron12/files/patch-base_files_file__path__watcher__freebsd.cc
new file mode 100644
index 0000000000000000000000000000000000000000..439dd5ab319148a0d4b2c2b956ca149795a9783a
--- /dev/null
+++ b/devel/electron12/files/patch-base_files_file__path__watcher__freebsd.cc
@@ -0,0 +1,64 @@
+--- base/files/file_path_watcher_freebsd.cc.orig	2021-04-22 07:53:22 UTC
++++ base/files/file_path_watcher_freebsd.cc
+@@ -0,0 +1,61 @@
++// Copyright (c) 2012 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++// This file exists for Unix systems which don't have the inotify headers, and
++// thus cannot build file_watcher_inotify.cc
++
++#include <memory>
++
++#include "base/files/file_path_watcher.h"
++#include "base/files/file_path_watcher_kqueue.h"
++
++#include "base/memory/ptr_util.h"
++#include "build/build_config.h"
++
++namespace base {
++
++namespace {
++
++class FilePathWatcherImpl : public FilePathWatcher::PlatformDelegate {
++ public:
++  FilePathWatcherImpl() = default;
++  FilePathWatcherImpl(const FilePathWatcherImpl&) = delete;
++  FilePathWatcherImpl& operator=(const FilePathWatcherImpl&) = delete;
++  ~FilePathWatcherImpl() override = default;
++
++  bool Watch(const FilePath& path,
++             Type type,
++             const FilePathWatcher::Callback& callback) override {
++    DCHECK(!impl_.get());
++
++    if (type == Type::kRecursive) {
++      return false;
++    } else {
++      impl_ = std::make_unique<FilePathWatcherKQueue>();
++    }
++
++    DCHECK(impl_.get());
++
++    return impl_->Watch(path, type, callback);
++  }
++
++  void Cancel() override {
++    if (impl_.get())
++      impl_->Cancel();
++    
++    set_cancelled();
++  }
++
++ private:
++  std::unique_ptr<PlatformDelegate> impl_;
++};
++
++}  // namespace
++
++FilePathWatcher::FilePathWatcher() {
++  sequence_checker_.DetachFromSequence();
++  impl_ = std::make_unique<FilePathWatcherImpl>();
++}
++
++}  // namespace base
diff --git a/devel/electron11/files/patch-base_files_file__path__watcher__kqueue.h b/devel/electron12/files/patch-base_files_file__path__watcher__kqueue.h
similarity index 100%
rename from devel/electron11/files/patch-base_files_file__path__watcher__kqueue.h
rename to devel/electron12/files/patch-base_files_file__path__watcher__kqueue.h
diff --git a/devel/electron11/files/patch-base_files_file__path__watcher__unittest.cc b/devel/electron12/files/patch-base_files_file__path__watcher__unittest.cc
similarity index 67%
rename from devel/electron11/files/patch-base_files_file__path__watcher__unittest.cc
rename to devel/electron12/files/patch-base_files_file__path__watcher__unittest.cc
index 201724b919d5bd9c0e0079ff72f410f0714988b7..e48b7bb416af45cc3c5bc9a95d0117c336ced32c 100644
--- a/devel/electron11/files/patch-base_files_file__path__watcher__unittest.cc
+++ b/devel/electron12/files/patch-base_files_file__path__watcher__unittest.cc
@@ -1,6 +1,6 @@
---- base/files/file_path_watcher_unittest.cc.orig	2021-01-07 00:36:18 UTC
+--- base/files/file_path_watcher_unittest.cc.orig	2021-04-14 01:08:36 UTC
 +++ base/files/file_path_watcher_unittest.cc
-@@ -425,12 +425,12 @@ TEST_F(FilePathWatcherTest, WatchDirectory) {
+@@ -444,12 +444,12 @@ TEST_F(FilePathWatcherTest, WatchDirectory) {
    VLOG(1) << "Waiting for file1 creation";
    ASSERT_TRUE(WaitForEvents());
  
@@ -15,16 +15,7 @@
  
    ASSERT_TRUE(base::DeleteFile(file1));
    VLOG(1) << "Waiting for file1 deletion";
-@@ -632,7 +632,7 @@ TEST_F(FilePathWatcherTest, FileAttributesChanged) {
-   ASSERT_TRUE(WaitForEvents());
- }
- 
--#if defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
- 
- // Verify that creating a symlink is caught.
- TEST_F(FilePathWatcherTest, CreateLink) {
-@@ -790,7 +790,7 @@ TEST_F(FilePathWatcherTest, LinkedDirectoryPart3) {
+@@ -822,7 +822,7 @@ TEST_F(FilePathWatcherTest, LinkedDirectoryPart3) {
    ASSERT_TRUE(WaitForEvents());
  }
  
@@ -33,7 +24,7 @@
  
  enum Permission {
    Read,
-@@ -798,7 +798,7 @@ enum Permission {
+@@ -830,7 +830,7 @@ enum Permission {
    Execute
  };
  
@@ -42,7 +33,7 @@
  bool ChangeFilePermissions(const FilePath& path, Permission perm, bool allow) {
    struct stat stat_buf;
  
-@@ -827,9 +827,9 @@ bool ChangeFilePermissions(const FilePath& path, Permi
+@@ -859,9 +859,9 @@ bool ChangeFilePermissions(const FilePath& path, Permi
    }
    return chmod(path.value().c_str(), stat_buf.st_mode) == 0;
  }
@@ -54,12 +45,12 @@
  // Linux implementation of FilePathWatcher doesn't catch attribute changes.
  // http://crbug.com/78043
  // Windows implementation of FilePathWatcher catches attribute changes that
-@@ -864,7 +864,7 @@ TEST_F(FilePathWatcherTest, DirAttributesChanged) {
+@@ -897,7 +897,7 @@ TEST_F(FilePathWatcherTest, DirAttributesChanged) {
    ASSERT_TRUE(ChangeFilePermissions(test_dir1, Execute, true));
  }
  
 -#endif  // OS_APPLE
 +#endif  // OS_APPLE || OS_BSD
- }  // namespace
  
- }  // namespace base
+ #if defined(OS_MAC)
+ 
diff --git a/devel/electron11/files/patch-base_files_file__util.h b/devel/electron12/files/patch-base_files_file__util.h
similarity index 88%
rename from devel/electron11/files/patch-base_files_file__util.h
rename to devel/electron12/files/patch-base_files_file__util.h
index 8f3edf16077e862b40557e73a4e9612ac114cd9f..460162ee2c17c651a6b68bbbeae0748002a1d57e 100644
--- a/devel/electron11/files/patch-base_files_file__util.h
+++ b/devel/electron12/files/patch-base_files_file__util.h
@@ -1,6 +1,6 @@
---- base/files/file_util.h.orig	2021-01-07 00:36:18 UTC
+--- base/files/file_util.h.orig	2021-04-14 01:08:36 UTC
 +++ base/files/file_util.h
-@@ -278,14 +278,14 @@ BASE_EXPORT bool SetPosixFilePermissions(const FilePat
+@@ -284,14 +284,14 @@ BASE_EXPORT bool SetPosixFilePermissions(const FilePat
  BASE_EXPORT bool ExecutableExistsInPath(Environment* env,
                                          const FilePath::StringType& executable);
  
@@ -17,7 +17,7 @@
  
  #endif  // OS_POSIX
  
-@@ -592,7 +592,7 @@ BASE_EXPORT bool VerifyPathControlledByAdmin(const bas
+@@ -603,7 +603,7 @@ BASE_EXPORT bool VerifyPathControlledByAdmin(const bas
  // the directory |path|, in the number of FilePath::CharType, or -1 on failure.
  BASE_EXPORT int GetMaximumPathComponentLength(const base::FilePath& path);
  
diff --git a/devel/electron11/files/patch-base_files_file__util__posix.cc b/devel/electron12/files/patch-base_files_file__util__posix.cc
similarity index 62%
rename from devel/electron11/files/patch-base_files_file__util__posix.cc
rename to devel/electron12/files/patch-base_files_file__util__posix.cc
index 18518b55a2dcbb4c6229a158495646aea9d77146..52a0b57f565dd4f87556b97d9830c8d4816b42b6 100644
--- a/devel/electron11/files/patch-base_files_file__util__posix.cc
+++ b/devel/electron12/files/patch-base_files_file__util__posix.cc
@@ -1,6 +1,6 @@
---- base/files/file_util_posix.cc.orig	2021-01-07 00:36:18 UTC
+--- base/files/file_util_posix.cc.orig	2021-04-14 01:08:36 UTC
 +++ base/files/file_util_posix.cc
-@@ -412,7 +412,7 @@ bool CreatePipe(ScopedFD* read_fd, ScopedFD* write_fd,
+@@ -380,7 +380,7 @@ bool CreatePipe(ScopedFD* read_fd, ScopedFD* write_fd,
  }
  
  bool CreateLocalNonBlockingPipe(int fds[2]) {
@@ -9,7 +9,7 @@
    return pipe2(fds, O_CLOEXEC | O_NONBLOCK) == 0;
  #else
    int raw_fds[2];
-@@ -947,8 +947,12 @@ bool AllocateFileRegion(File* file, int64_t offset, si
+@@ -927,8 +927,12 @@ bool AllocateFileRegion(File* file, int64_t offset, si
    // space. It can fail because the filesystem doesn't support it. In that case,
    // use the manual method below.
  
@@ -23,7 +23,25 @@
      return true;
    DPLOG(ERROR) << "fallocate";
  #elif defined(OS_APPLE)
-@@ -1172,7 +1176,7 @@ PrefetchResult PreReadFile(const FilePath& file_path,
+@@ -1098,7 +1102,7 @@ int GetMaximumPathComponentLength(const FilePath& path
+ #if !defined(OS_ANDROID)
+ // This is implemented in file_util_android.cc for that platform.
+ bool GetShmemTempDir(bool executable, FilePath* path) {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_AIX)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_AIX) || defined(OS_BSD)
+   bool disable_dev_shm = false;
+ #if !BUILDFLAG(IS_CHROMEOS_ASH) && !BUILDFLAG(IS_CHROMEOS_LACROS)
+   disable_dev_shm = CommandLine::ForCurrentProcess()->HasSwitch(
+@@ -1114,7 +1118,7 @@ bool GetShmemTempDir(bool executable, FilePath* path) 
+     *path = FilePath("/dev/shm");
+     return true;
+   }
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_AIX)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_AIX) || defined(OS_BSD)
+   return GetTempDir(path);
+ }
+ #endif  // !defined(OS_ANDROID)
+@@ -1152,7 +1156,7 @@ PrefetchResult PreReadFile(const FilePath& file_path,
    // posix_fadvise() is only available in the Android NDK in API 21+. Older
    // versions may have the required kernel support, but don't have enough usage
    // to justify backporting.
@@ -32,7 +50,7 @@
      (defined(OS_ANDROID) && __ANDROID_API__ >= 21)
    File file(file_path, File::FLAG_OPEN | File::FLAG_READ);
    if (!file.IsValid())
-@@ -1208,7 +1212,7 @@ PrefetchResult PreReadFile(const FilePath& file_path,
+@@ -1188,7 +1192,7 @@ PrefetchResult PreReadFile(const FilePath& file_path,
    return internal::PreReadFileSlow(file_path, max_bytes)
               ? PrefetchResult{PrefetchResultCode::kSlowSuccess}
               : PrefetchResult{PrefetchResultCode::kSlowFailed};
@@ -41,7 +59,7 @@
          // __ANDROID_API__ >= 21)
  }
  
-@@ -1243,7 +1247,7 @@ bool MoveUnsafe(const FilePath& from_path, const FileP
+@@ -1223,7 +1227,7 @@ bool MoveUnsafe(const FilePath& from_path, const FileP
  
  #endif  // !defined(OS_NACL_NONSFI)
  
@@ -50,7 +68,7 @@
  BASE_EXPORT bool IsPathExecutable(const FilePath& path) {
    bool result = false;
    FilePath tmp_file_path;
-@@ -1264,6 +1268,6 @@ BASE_EXPORT bool IsPathExecutable(const FilePath& path
+@@ -1244,6 +1248,6 @@ BASE_EXPORT bool IsPathExecutable(const FilePath& path
    }
    return result;
  }
diff --git a/devel/electron11/files/patch-base_files_file__util__unittest.cc b/devel/electron12/files/patch-base_files_file__util__unittest.cc
similarity index 79%
rename from devel/electron11/files/patch-base_files_file__util__unittest.cc
rename to devel/electron12/files/patch-base_files_file__util__unittest.cc
index 9577c86180afad7b72a8208466e4f9477ca447e6..453baff33d892c558b0a39311f640475d382feb7 100644
--- a/devel/electron11/files/patch-base_files_file__util__unittest.cc
+++ b/devel/electron12/files/patch-base_files_file__util__unittest.cc
@@ -1,6 +1,6 @@
---- base/files/file_util_unittest.cc.orig	2021-01-07 00:36:18 UTC
+--- base/files/file_util_unittest.cc.orig	2021-04-14 01:08:36 UTC
 +++ base/files/file_util_unittest.cc
-@@ -1639,7 +1639,7 @@ TEST_F(FileUtilTest, DeleteDirRecursiveWithOpenFile) {
+@@ -1638,7 +1638,7 @@ TEST_F(FileUtilTest, DeleteDirRecursiveWithOpenFile) {
  #endif
  }
  
@@ -9,7 +9,7 @@
  // This test will validate that files which would block when read result in a
  // failure on a call to ReadFileToStringNonBlocking. To accomplish this we will
  // use a named pipe because it appears as a file on disk and we can control how
-@@ -1672,7 +1672,7 @@ TEST_F(FileUtilTest, TestNonBlockingFileReadLinux) {
+@@ -1671,7 +1671,7 @@ TEST_F(FileUtilTest, TestNonBlockingFileReadLinux) {
    ASSERT_EQ(result.size(), 1u);
    EXPECT_EQ(result[0], 'a');
  }
@@ -18,7 +18,7 @@
  
  TEST_F(FileUtilTest, MoveFileNew) {
    // Create a file
-@@ -3507,7 +3507,7 @@ TEST_F(FileUtilTest, ReadFileToStringWithNamedPipe) {
+@@ -3506,7 +3506,7 @@ TEST_F(FileUtilTest, ReadFileToStringWithNamedPipe) {
  }
  #endif  // defined(OS_WIN)
  
@@ -27,7 +27,7 @@
  TEST_F(FileUtilTest, ReadFileToStringWithProcFileSystem) {
    FilePath file_path("/proc/cpuinfo");
    std::string data = "temp";
-@@ -3525,7 +3525,7 @@ TEST_F(FileUtilTest, ReadFileToStringWithProcFileSyste
+@@ -3524,7 +3524,7 @@ TEST_F(FileUtilTest, ReadFileToStringWithProcFileSyste
  
    EXPECT_FALSE(ReadFileToStringWithMaxSize(file_path, nullptr, 4));
  }
diff --git a/devel/electron11/files/patch-base_files_scoped__file.cc b/devel/electron12/files/patch-base_files_scoped__file.cc
similarity index 100%
rename from devel/electron11/files/patch-base_files_scoped__file.cc
rename to devel/electron12/files/patch-base_files_scoped__file.cc
diff --git a/devel/electron11/files/patch-base_i18n_icu__util.cc b/devel/electron12/files/patch-base_i18n_icu__util.cc
similarity index 82%
rename from devel/electron11/files/patch-base_i18n_icu__util.cc
rename to devel/electron12/files/patch-base_i18n_icu__util.cc
index 5afef686d775c4c7ae684bc0e87c531426772312..ef08fad4730488ebf2c4f745c190ee687db2b2ba 100644
--- a/devel/electron11/files/patch-base_i18n_icu__util.cc
+++ b/devel/electron12/files/patch-base_i18n_icu__util.cc
@@ -1,4 +1,4 @@
---- base/i18n/icu_util.cc.orig	2021-01-07 00:36:18 UTC
+--- base/i18n/icu_util.cc.orig	2021-04-14 01:08:36 UTC
 +++ base/i18n/icu_util.cc
 @@ -48,7 +48,7 @@
  #include "third_party/icu/source/common/unicode/unistr.h"
@@ -9,8 +9,8 @@
      ((defined(OS_LINUX) || defined(OS_CHROMEOS)) && !BUILDFLAG(IS_CHROMECAST))
  #include "third_party/icu/source/i18n/unicode/timezone.h"
  #endif
-@@ -341,7 +341,7 @@ void InitializeIcuTimeZone() {
-       fuchsia::IntlProfileWatcher::GetPrimaryTimeZoneIdForIcuInitialization();
+@@ -342,7 +342,7 @@ void InitializeIcuTimeZone() {
+       FuchsiaIntlProfileWatcher::GetPrimaryTimeZoneIdForIcuInitialization();
    icu::TimeZone::adoptDefault(
        icu::TimeZone::createTimeZone(icu::UnicodeString::fromUTF8(zone_id)));
 -#elif (defined(OS_LINUX) || defined(OS_CHROMEOS)) && !BUILDFLAG(IS_CHROMECAST)
diff --git a/devel/electron11/files/patch-base_linux__util.cc b/devel/electron12/files/patch-base_linux__util.cc
similarity index 80%
rename from devel/electron11/files/patch-base_linux__util.cc
rename to devel/electron12/files/patch-base_linux__util.cc
index ab2399d1c64e3fef0320d1b4da3d48916de7d8bb..9b7b80113341a78930bae7c28b8d8e9801029ba4 100644
--- a/devel/electron11/files/patch-base_linux__util.cc
+++ b/devel/electron12/files/patch-base_linux__util.cc
@@ -1,4 +1,4 @@
---- base/linux_util.cc.orig	2021-01-07 00:36:18 UTC
+--- base/linux_util.cc.orig	2021-04-14 01:08:36 UTC
 +++ base/linux_util.cc
 @@ -15,6 +15,7 @@
  
@@ -8,7 +8,7 @@
  
  #include "base/files/dir_reader_posix.h"
  #include "base/files/file_util.h"
-@@ -78,6 +79,9 @@ class DistroNameGetter {
+@@ -79,6 +80,9 @@ class DistroNameGetter {
   public:
    DistroNameGetter() {
      static const char* const kFilesToCheck[] = {"/etc/os-release",
@@ -18,7 +18,7 @@
                                                  "/usr/lib/os-release"};
      for (const char* file : kFilesToCheck) {
        if (ReadDistroFromOSReleaseFile(file))
-@@ -134,6 +138,9 @@ void SetLinuxDistro(const std::string& distro) {
+@@ -135,6 +139,9 @@ void SetLinuxDistro(const std::string& distro) {
  }
  
  bool GetThreadsForProcess(pid_t pid, std::vector<pid_t>* tids) {
@@ -28,7 +28,7 @@
    // 25 > strlen("/proc//task") + strlen(std::to_string(INT_MAX)) + 1 = 22
    char buf[25];
    strings::SafeSPrintf(buf, "/proc/%d/task", pid);
-@@ -153,6 +160,7 @@ bool GetThreadsForProcess(pid_t pid, std::vector<pid_t
+@@ -154,6 +161,7 @@ bool GetThreadsForProcess(pid_t pid, std::vector<pid_t
    }
  
    return true;
diff --git a/devel/electron11/files/patch-base_location__unittest.cc b/devel/electron12/files/patch-base_location__unittest.cc
similarity index 100%
rename from devel/electron11/files/patch-base_location__unittest.cc
rename to devel/electron12/files/patch-base_location__unittest.cc
diff --git a/devel/electron11/files/patch-base_logging__unittest.cc b/devel/electron12/files/patch-base_logging__unittest.cc
similarity index 83%
rename from devel/electron11/files/patch-base_logging__unittest.cc
rename to devel/electron12/files/patch-base_logging__unittest.cc
index cb56e1326da681cbdcdb018207317ba51f32f480..f4b4d0b4d0951054c6b4cfd93359650edf1101a1 100644
--- a/devel/electron11/files/patch-base_logging__unittest.cc
+++ b/devel/electron12/files/patch-base_logging__unittest.cc
@@ -1,6 +1,6 @@
---- base/logging_unittest.cc.orig	2021-01-07 00:36:18 UTC
+--- base/logging_unittest.cc.orig	2021-04-14 01:08:36 UTC
 +++ base/logging_unittest.cc
-@@ -29,7 +29,7 @@
+@@ -30,7 +30,7 @@
  #include "base/posix/eintr_wrapper.h"
  #endif  // OS_POSIX
  
@@ -9,7 +9,7 @@
  #include <ucontext.h>
  #endif
  
-@@ -559,7 +559,7 @@ void CheckCrashTestSighandler(int, siginfo_t* info, vo
+@@ -560,7 +560,7 @@ void CheckCrashTestSighandler(int, siginfo_t* info, vo
    // need the arch-specific boilerplate below, which is inspired by breakpad.
    // At the same time, on OSX, ucontext.h is deprecated but si_addr works fine.
    uintptr_t crash_addr = 0;
diff --git a/devel/electron11/files/patch-base_memory_discardable__memory.cc b/devel/electron12/files/patch-base_memory_discardable__memory.cc
similarity index 100%
rename from devel/electron11/files/patch-base_memory_discardable__memory.cc
rename to devel/electron12/files/patch-base_memory_discardable__memory.cc
diff --git a/devel/electron11/files/patch-base_memory_discardable__memory__internal.h b/devel/electron12/files/patch-base_memory_discardable__memory__internal.h
similarity index 100%
rename from devel/electron11/files/patch-base_memory_discardable__memory__internal.h
rename to devel/electron12/files/patch-base_memory_discardable__memory__internal.h
diff --git a/devel/electron11/files/patch-base_memory_madv__free__discardable__memory__posix.cc b/devel/electron12/files/patch-base_memory_madv__free__discardable__memory__posix.cc
similarity index 100%
rename from devel/electron11/files/patch-base_memory_madv__free__discardable__memory__posix.cc
rename to devel/electron12/files/patch-base_memory_madv__free__discardable__memory__posix.cc
diff --git a/devel/electron11/files/patch-base_memory_platform__shared__memory__region.h b/devel/electron12/files/patch-base_memory_platform__shared__memory__region.h
similarity index 100%
rename from devel/electron11/files/patch-base_memory_platform__shared__memory__region.h
rename to devel/electron12/files/patch-base_memory_platform__shared__memory__region.h
diff --git a/devel/electron12/files/patch-base_memory_platform__shared__memory__region__posix.cc b/devel/electron12/files/patch-base_memory_platform__shared__memory__region__posix.cc
new file mode 100644
index 0000000000000000000000000000000000000000..5ff9a2f68bda2fa143d8ac5176340a24cf70a607
--- /dev/null
+++ b/devel/electron12/files/patch-base_memory_platform__shared__memory__region__posix.cc
@@ -0,0 +1,100 @@
+--- base/memory/platform_shared_memory_region_posix.cc.orig	2021-04-14 01:08:36 UTC
++++ base/memory/platform_shared_memory_region_posix.cc
+@@ -23,7 +23,11 @@ struct ScopedPathUnlinkerTraits {
+   static const FilePath* InvalidValue() { return nullptr; }
+ 
+   static void Free(const FilePath* path) {
++#if defined(OS_BSD)
++    if (shm_unlink(path->value().c_str()))
++#else
+     if (unlink(path->value().c_str()))
++#endif
+       PLOG(WARNING) << "unlink";
+   }
+ };
+@@ -70,7 +74,7 @@ FDPair ScopedFDPair::get() const {
+   return {fd.get(), readonly_fd.get()};
+ }
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // static
+ ScopedFD PlatformSharedMemoryRegion::ExecutableRegion::CreateFD(size_t size) {
+   PlatformSharedMemoryRegion region =
+@@ -79,7 +83,7 @@ ScopedFD PlatformSharedMemoryRegion::ExecutableRegion:
+     return region.PassPlatformHandle().fd;
+   return ScopedFD();
+ }
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ 
+ // static
+ PlatformSharedMemoryRegion PlatformSharedMemoryRegion::Take(
+@@ -204,7 +208,7 @@ bool PlatformSharedMemoryRegion::MapAtInternal(off_t o
+ // static
+ PlatformSharedMemoryRegion PlatformSharedMemoryRegion::Create(Mode mode,
+                                                               size_t size
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+                                                               ,
+                                                               bool executable
+ #endif
+@@ -242,6 +246,22 @@ PlatformSharedMemoryRegion PlatformSharedMemoryRegion:
+     return {};
+   }
+ 
++#if defined(OS_BSD)
++  UnguessableToken token = UnguessableToken::Create();
++  FilePath path = directory.Append(token.ToString());
++  ScopedFD fd{HANDLE_EINTR(shm_open(path.value().c_str(), O_CREAT | O_RDWR, 0700))};
++  File shm_file(fd.release());
++
++  if (!shm_file.IsValid()) {
++    PLOG(ERROR) << "Creating shared memory failed";
++    return {};
++  }
++
++  if (HANDLE_EINTR(ftruncate(shm_file.GetPlatformFile(), size)) == -1) {
++    PLOG(ERROR) << "Failed to extend shared memory object to size " << size;
++    return {};
++  }
++#else
+   FilePath path;
+   ScopedFD fd = CreateAndOpenFdForTemporaryFileInDir(directory, &path);
+   File shm_file(fd.release());
+@@ -258,6 +278,7 @@ PlatformSharedMemoryRegion PlatformSharedMemoryRegion:
+     }
+     return {};
+   }
++#endif // OS_BSD
+ 
+   // Deleting the file prevents anyone else from mapping it in (making it
+   // private), and prevents the need for cleanup (once the last fd is
+@@ -267,7 +288,11 @@ PlatformSharedMemoryRegion PlatformSharedMemoryRegion:
+   ScopedFD readonly_fd;
+   if (mode == Mode::kWritable) {
+     // Also open as readonly so that we can ConvertToReadOnly().
++#if defined(OS_BSD)
++    readonly_fd.reset(HANDLE_EINTR(shm_open(path.value().c_str(), O_RDONLY, 0400)));
++#else
+     readonly_fd.reset(HANDLE_EINTR(open(path.value().c_str(), O_RDONLY)));
++#endif
+     if (!readonly_fd.is_valid()) {
+       DPLOG(ERROR) << "open(\"" << path.value() << "\", O_RDONLY) failed";
+       return {};
+@@ -298,9 +323,15 @@ PlatformSharedMemoryRegion PlatformSharedMemoryRegion:
+     }
+   }
+ 
++#if defined(OS_BSD)
+   return PlatformSharedMemoryRegion(
+       {ScopedFD(shm_file.TakePlatformFile()), std::move(readonly_fd)}, mode,
++      size, token);
++#else
++  return PlatformSharedMemoryRegion(
++      {ScopedFD(shm_file.TakePlatformFile()), std::move(readonly_fd)}, mode,
+       size, UnguessableToken::Create());
++#endif  // OS_BSD
+ #endif  // !defined(OS_NACL)
+ }
+ 
diff --git a/devel/electron11/files/patch-base_memory_shared__memory__region__unittest.cc b/devel/electron12/files/patch-base_memory_shared__memory__region__unittest.cc
similarity index 100%
rename from devel/electron11/files/patch-base_memory_shared__memory__region__unittest.cc
rename to devel/electron12/files/patch-base_memory_shared__memory__region__unittest.cc
diff --git a/devel/electron11/files/patch-base_message__loop_message__pump__glib.cc b/devel/electron12/files/patch-base_message__loop_message__pump__glib.cc
similarity index 100%
rename from devel/electron11/files/patch-base_message__loop_message__pump__glib.cc
rename to devel/electron12/files/patch-base_message__loop_message__pump__glib.cc
diff --git a/devel/electron11/files/patch-base_native__library__posix.cc b/devel/electron12/files/patch-base_native__library__posix.cc
similarity index 100%
rename from devel/electron11/files/patch-base_native__library__posix.cc
rename to devel/electron12/files/patch-base_native__library__posix.cc
diff --git a/devel/electron11/files/patch-base_native__library__unittest.cc b/devel/electron12/files/patch-base_native__library__unittest.cc
similarity index 100%
rename from devel/electron11/files/patch-base_native__library__unittest.cc
rename to devel/electron12/files/patch-base_native__library__unittest.cc
diff --git a/devel/electron11/files/patch-base_numerics_safe__math__shared__impl.h b/devel/electron12/files/patch-base_numerics_safe__math__shared__impl.h
similarity index 100%
rename from devel/electron11/files/patch-base_numerics_safe__math__shared__impl.h
rename to devel/electron12/files/patch-base_numerics_safe__math__shared__impl.h
diff --git a/devel/electron11/files/patch-base_path__service__unittest.cc b/devel/electron12/files/patch-base_path__service__unittest.cc
similarity index 100%
rename from devel/electron11/files/patch-base_path__service__unittest.cc
rename to devel/electron12/files/patch-base_path__service__unittest.cc
diff --git a/devel/electron11/files/patch-base_posix_can__lower__nice__to.cc b/devel/electron12/files/patch-base_posix_can__lower__nice__to.cc
similarity index 100%
rename from devel/electron11/files/patch-base_posix_can__lower__nice__to.cc
rename to devel/electron12/files/patch-base_posix_can__lower__nice__to.cc
diff --git a/devel/electron11/files/patch-base_posix_unix__domain__socket.cc b/devel/electron12/files/patch-base_posix_unix__domain__socket.cc
similarity index 100%
rename from devel/electron11/files/patch-base_posix_unix__domain__socket.cc
rename to devel/electron12/files/patch-base_posix_unix__domain__socket.cc
diff --git a/devel/electron11/files/patch-base_posix_unix__domain__socket__unittest.cc b/devel/electron12/files/patch-base_posix_unix__domain__socket__unittest.cc
similarity index 100%
rename from devel/electron11/files/patch-base_posix_unix__domain__socket__unittest.cc
rename to devel/electron12/files/patch-base_posix_unix__domain__socket__unittest.cc
diff --git a/devel/electron11/files/patch-base_process_internal__linux.cc b/devel/electron12/files/patch-base_process_internal__linux.cc
similarity index 100%
rename from devel/electron11/files/patch-base_process_internal__linux.cc
rename to devel/electron12/files/patch-base_process_internal__linux.cc
diff --git a/devel/electron11/files/patch-base_process_internal__linux.h b/devel/electron12/files/patch-base_process_internal__linux.h
similarity index 100%
rename from devel/electron11/files/patch-base_process_internal__linux.h
rename to devel/electron12/files/patch-base_process_internal__linux.h
diff --git a/devel/electron11/files/patch-base_process_kill.h b/devel/electron12/files/patch-base_process_kill.h
similarity index 100%
rename from devel/electron11/files/patch-base_process_kill.h
rename to devel/electron12/files/patch-base_process_kill.h
diff --git a/devel/electron11/files/patch-base_process_kill__posix.cc b/devel/electron12/files/patch-base_process_kill__posix.cc
similarity index 100%
rename from devel/electron11/files/patch-base_process_kill__posix.cc
rename to devel/electron12/files/patch-base_process_kill__posix.cc
diff --git a/devel/electron11/files/patch-base_process_launch.cc b/devel/electron12/files/patch-base_process_launch.cc
similarity index 100%
rename from devel/electron11/files/patch-base_process_launch.cc
rename to devel/electron12/files/patch-base_process_launch.cc
diff --git a/devel/electron11/files/patch-base_process_launch.h b/devel/electron12/files/patch-base_process_launch.h
similarity index 84%
rename from devel/electron11/files/patch-base_process_launch.h
rename to devel/electron12/files/patch-base_process_launch.h
index 8ed81cf98af8978a57e5d03b8d4c254b15f81d92..59f932d847aba108548d227dc19239cc2e967c37 100644
--- a/devel/electron11/files/patch-base_process_launch.h
+++ b/devel/electron12/files/patch-base_process_launch.h
@@ -1,6 +1,6 @@
---- base/process/launch.h.orig	2021-01-07 00:36:18 UTC
+--- base/process/launch.h.orig	2021-04-14 01:08:36 UTC
 +++ base/process/launch.h
-@@ -180,7 +180,7 @@ struct BASE_EXPORT LaunchOptions {
+@@ -182,7 +182,7 @@ struct BASE_EXPORT LaunchOptions {
    bool clear_environment = false;
  #endif  // OS_WIN || OS_POSIX || OS_FUCHSIA
  
@@ -9,7 +9,7 @@
    // If non-zero, start the process using clone(), using flags as provided.
    // Unlike in clone, clone_flags may not contain a custom termination signal
    // that is sent to the parent when the child dies. The termination signal will
-@@ -193,7 +193,7 @@ struct BASE_EXPORT LaunchOptions {
+@@ -195,7 +195,7 @@ struct BASE_EXPORT LaunchOptions {
  
    // Sets parent process death signal to SIGKILL.
    bool kill_on_parent_death = false;
@@ -18,7 +18,7 @@
  
  #if defined(OS_MAC)
    // Mach ports that will be accessible to the child process. These are not
-@@ -408,7 +408,7 @@ BASE_EXPORT void RaiseProcessToHighPriority();
+@@ -410,7 +410,7 @@ BASE_EXPORT void RaiseProcessToHighPriority();
  // binary. This should not be called in production/released code.
  BASE_EXPORT LaunchOptions LaunchOptionsForTest();
  
diff --git a/devel/electron12/files/patch-base_process_launch__posix.cc b/devel/electron12/files/patch-base_process_launch__posix.cc
new file mode 100644
index 0000000000000000000000000000000000000000..a64c5f0f8df3e4f371f8b315bf7790f1633f31e2
--- /dev/null
+++ b/devel/electron12/files/patch-base_process_launch__posix.cc
@@ -0,0 +1,80 @@
+--- base/process/launch_posix.cc.orig	2021-04-14 01:08:36 UTC
++++ base/process/launch_posix.cc
+@@ -59,12 +59,14 @@
+ #if defined(OS_FREEBSD)
+ #include <sys/event.h>
+ #include <sys/ucontext.h>
++#include <sys/procctl.h>
+ #endif
+ 
+ #if defined(OS_APPLE)
+ #error "macOS should use launch_mac.cc"
+ #endif
+ 
++#pragma weak environ
+ extern char** environ;
+ 
+ namespace base {
+@@ -221,6 +223,28 @@ void CloseSuperfluousFds(const base::InjectiveMultimap
+   DirReaderPosix fd_dir(kFDDir);
+   if (!fd_dir.IsValid()) {
+     // Fallback case: Try every possible fd.
++
++#if defined(OS_FREEBSD)
++    // CEM: blast away most of the range with closefrom().  A common use case
++    // of this function only maps STDIN/STDOUT/STDERR and closefrom(3) is much
++    // cheaper than x00,000 close(2) invocations with a high RLIMIT_NOFILE.
++    //
++    // In the other caller, it is still very likely that the fds we care about
++    // are in relatively low number space and we can save hundreds of thousands
++    // of syscalls.
++    int max_valid_fd = -1;
++    for (size_t j = 0; j < saved_mapping.size(); j++) {
++      int fd = saved_mapping[j].dest;
++      if (fd > max_valid_fd)
++	max_valid_fd = fd;
++    }
++    if (max_valid_fd < STDERR_FILENO)
++      max_valid_fd = STDERR_FILENO;
++
++    closefrom(max_valid_fd + 1);
++    max_fds = static_cast<size_t>(max_valid_fd) + 1;
++#endif
++
+     for (size_t i = 0; i < max_fds; ++i) {
+       const int fd = static_cast<int>(i);
+       if (fd == STDIN_FILENO || fd == STDOUT_FILENO || fd == STDERR_FILENO)
+@@ -444,22 +468,32 @@ Process LaunchProcess(const std::vector<std::string>& 
+ 
+     // Set NO_NEW_PRIVS by default. Since NO_NEW_PRIVS only exists in kernel
+     // 3.5+, do not check the return value of prctl here.
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_AIX)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_AIX) || defined(OS_FREEBSD)
+ #ifndef PR_SET_NO_NEW_PRIVS
+ #define PR_SET_NO_NEW_PRIVS 38
+ #endif
++#if !defined(OS_FREEBSD)
+     if (!options.allow_new_privs) {
+       if (prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0) && errno != EINVAL) {
+         // Only log if the error is not EINVAL (i.e. not supported).
+         RAW_LOG(FATAL, "prctl(PR_SET_NO_NEW_PRIVS) failed");
+       }
+     }
++#endif
+ 
+     if (options.kill_on_parent_death) {
++#if defined(OS_FREEBSD)
++      int procctl_value = SIGKILL;
++      if (procctl(P_PID, 0, PROC_PDEATHSIG_CTL, &procctl_value)) {
++        RAW_LOG(ERROR, "procctl(PROC_PDEATHSIG_CTL) failed");
++        _exit(127);
++      }
++#else
+       if (prctl(PR_SET_PDEATHSIG, SIGKILL) != 0) {
+         RAW_LOG(ERROR, "prctl(PR_SET_PDEATHSIG) failed");
+         _exit(127);
+       }
++#endif
+     }
+ #endif
+ 
diff --git a/devel/electron11/files/patch-base_process_memory.cc b/devel/electron12/files/patch-base_process_memory.cc
similarity index 100%
rename from devel/electron11/files/patch-base_process_memory.cc
rename to devel/electron12/files/patch-base_process_memory.cc
diff --git a/devel/electron11/files/patch-base_process_memory.h b/devel/electron12/files/patch-base_process_memory.h
similarity index 100%
rename from devel/electron11/files/patch-base_process_memory.h
rename to devel/electron12/files/patch-base_process_memory.h
diff --git a/devel/electron11/files/patch-base_process_memory__unittest.cc b/devel/electron12/files/patch-base_process_memory__unittest.cc
similarity index 100%
rename from devel/electron11/files/patch-base_process_memory__unittest.cc
rename to devel/electron12/files/patch-base_process_memory__unittest.cc
diff --git a/devel/electron11/files/patch-base_process_process__handle.cc b/devel/electron12/files/patch-base_process_process__handle.cc
similarity index 100%
rename from devel/electron11/files/patch-base_process_process__handle.cc
rename to devel/electron12/files/patch-base_process_process__handle.cc
diff --git a/devel/electron11/files/patch-base_process_process__handle.h b/devel/electron12/files/patch-base_process_process__handle.h
similarity index 100%
rename from devel/electron11/files/patch-base_process_process__handle.h
rename to devel/electron12/files/patch-base_process_process__handle.h
diff --git a/devel/electron11/files/patch-base_process_process__handle__freebsd.cc b/devel/electron12/files/patch-base_process_process__handle__freebsd.cc
similarity index 100%
rename from devel/electron11/files/patch-base_process_process__handle__freebsd.cc
rename to devel/electron12/files/patch-base_process_process__handle__freebsd.cc
diff --git a/devel/electron11/files/patch-base_process_process__iterator__freebsd.cc b/devel/electron12/files/patch-base_process_process__iterator__freebsd.cc
similarity index 78%
rename from devel/electron11/files/patch-base_process_process__iterator__freebsd.cc
rename to devel/electron12/files/patch-base_process_process__iterator__freebsd.cc
index 795b52b61e4f3877cb93b05db4406956a4029426..54448477150b7fabb39bca5b2b5675fa1d7ae1ff 100644
--- a/devel/electron11/files/patch-base_process_process__iterator__freebsd.cc
+++ b/devel/electron12/files/patch-base_process_process__iterator__freebsd.cc
@@ -1,4 +1,4 @@
---- base/process/process_iterator_freebsd.cc.orig	2021-01-07 00:36:18 UTC
+--- base/process/process_iterator_freebsd.cc.orig	2021-04-14 01:08:36 UTC
 +++ base/process/process_iterator_freebsd.cc
 @@ -10,6 +10,10 @@
  #include <sys/sysctl.h>
@@ -20,6 +20,15 @@
          // If we get a mem error, it just means we need a bigger buffer, so
          // loop around again.  Anything else is a real error and give up.
          if (errno != ENOMEM) {
+@@ -50,7 +54,7 @@ ProcessIterator::ProcessIterator(const ProcessFilter* 
+         }
+       } else {
+         // Got the list, just make sure we're sized exactly right
+-        size_t num_of_kinfo_proc = len / sizeof(struct kinfo_proc);
++        num_of_kinfo_proc = len / sizeof(struct kinfo_proc);
+         kinfo_procs_.resize(num_of_kinfo_proc);
+         done = true;
+       }
 @@ -72,18 +76,13 @@ bool ProcessIterator::CheckForNextProcess() {
    for (; index_of_kinfo_proc_ < kinfo_procs_.size(); ++index_of_kinfo_proc_) {
      size_t length;
diff --git a/devel/electron11/files/patch-base_process_process__linux.cc b/devel/electron12/files/patch-base_process_process__linux.cc
similarity index 76%
rename from devel/electron11/files/patch-base_process_process__linux.cc
rename to devel/electron12/files/patch-base_process_process__linux.cc
index b7c0a337dc5aa8c127826c58985ee4168b14da2d..b4e911bfd3c0b306bac676bd0a3d91bb5aaca924 100644
--- a/devel/electron11/files/patch-base_process_process__linux.cc
+++ b/devel/electron12/files/patch-base_process_process__linux.cc
@@ -1,4 +1,4 @@
---- base/process/process_linux.cc.orig	2021-01-07 00:36:18 UTC
+--- base/process/process_linux.cc.orig	2021-04-14 01:08:36 UTC
 +++ base/process/process_linux.cc
 @@ -24,7 +24,9 @@ namespace base {
  
@@ -8,7 +8,7 @@
  const int kForegroundPriority = 0;
 +#endif
  
- #if defined(OS_CHROMEOS) || BUILDFLAG(IS_LACROS)
+ #if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
  // We are more aggressive in our lowering of background process priority
 @@ -69,7 +71,7 @@ struct CGroups {
      return groups;
@@ -17,7 +17,7 @@
 -#else
 +#elif !defined(OS_BSD)
  const int kBackgroundPriority = 5;
- #endif  // defined(OS_CHROMEOS) || BUILDFLAG(IS_LACROS)
+ #endif  // BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
  
 @@ -96,13 +98,18 @@ Time Process::CreationTime() const {
    if (!start_ticks)
@@ -37,12 +37,12 @@
 +#if !defined(OS_BSD)
  // static
  bool Process::CanBackgroundProcesses() {
- #if defined(OS_CHROMEOS) || BUILDFLAG(IS_LACROS)
+ #if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
 @@ -154,6 +161,7 @@ bool Process::SetProcessBackgrounded(bool background) 
    DPCHECK(result == 0);
    return result == 0;
  }
 +#endif // !defined(OS_BSD)
  
- #if defined(OS_CHROMEOS) || BUILDFLAG(IS_LACROS)
+ #if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
  bool IsProcessBackgroundedCGroup(const StringPiece& cgroup_contents) {
diff --git a/devel/electron11/files/patch-base_process_process__metrics.cc b/devel/electron12/files/patch-base_process_process__metrics.cc
similarity index 83%
rename from devel/electron11/files/patch-base_process_process__metrics.cc
rename to devel/electron12/files/patch-base_process_process__metrics.cc
index fb7aea7df066f4ca60ba116554c85ee788961570..1975e97b1862e4c6adcd6867b2be390a23d8361b 100644
--- a/devel/electron11/files/patch-base_process_process__metrics.cc
+++ b/devel/electron12/files/patch-base_process_process__metrics.cc
@@ -1,6 +1,6 @@
---- base/process/process_metrics.cc.orig	2021-01-07 00:36:18 UTC
+--- base/process/process_metrics.cc.orig	2021-04-14 01:08:36 UTC
 +++ base/process/process_metrics.cc
-@@ -49,7 +49,7 @@ SystemMetrics SystemMetrics::Sample() {
+@@ -50,7 +50,7 @@ SystemMetrics SystemMetrics::Sample() {
    SystemMetrics system_metrics;
  
    system_metrics.committed_memory_ = GetSystemCommitCharge();
@@ -9,7 +9,7 @@
    GetSystemMemoryInfo(&system_metrics.memory_info_);
    GetVmStatInfo(&system_metrics.vmstat_info_);
    GetSystemDiskInfo(&system_metrics.disk_info_);
-@@ -68,7 +68,7 @@ std::unique_ptr<Value> SystemMetrics::ToValue() const 
+@@ -69,7 +69,7 @@ std::unique_ptr<Value> SystemMetrics::ToValue() const 
    std::unique_ptr<DictionaryValue> res(new DictionaryValue());
  
    res->SetIntKey("committed_memory", static_cast<int>(committed_memory_));
@@ -18,7 +18,7 @@
    std::unique_ptr<DictionaryValue> meminfo = memory_info_.ToValue();
    std::unique_ptr<DictionaryValue> vmstat = vmstat_info_.ToValue();
    meminfo->MergeDictionary(vmstat.get());
-@@ -119,7 +119,7 @@ double ProcessMetrics::GetPlatformIndependentCPUUsage(
+@@ -120,7 +120,7 @@ double ProcessMetrics::GetPlatformIndependentCPUUsage(
  }
  #endif
  
@@ -27,7 +27,7 @@
      defined(OS_AIX)
  int ProcessMetrics::CalculateIdleWakeupsPerSecond(
      uint64_t absolute_idle_wakeups) {
-@@ -132,7 +132,7 @@ int ProcessMetrics::GetIdleWakeupsPerSecond() {
+@@ -133,7 +133,7 @@ int ProcessMetrics::GetIdleWakeupsPerSecond() {
    NOTIMPLEMENTED();  // http://crbug.com/120488
    return 0;
  }
diff --git a/devel/electron11/files/patch-base_process_process__metrics.h b/devel/electron12/files/patch-base_process_process__metrics.h
similarity index 97%
rename from devel/electron11/files/patch-base_process_process__metrics.h
rename to devel/electron12/files/patch-base_process_process__metrics.h
index 4b07263bd077ea9b055d9a9f4ddca9ccd1b4c57a..b10072b9f016d5544eb1ff91882b150af3f18ba1 100644
--- a/devel/electron11/files/patch-base_process_process__metrics.h
+++ b/devel/electron12/files/patch-base_process_process__metrics.h
@@ -1,4 +1,4 @@
---- base/process/process_metrics.h.orig	2021-01-07 00:36:18 UTC
+--- base/process/process_metrics.h.orig	2021-04-14 01:08:36 UTC
 +++ base/process/process_metrics.h
 @@ -47,7 +47,7 @@ namespace base {
  // Full declaration is in process_metrics_iocounters.h.
@@ -128,7 +128,7 @@
 +#endif  // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) ||
          // defined(OS_AIX) defined(OS_FUCHSIA)
  
- #if defined(OS_CHROMEOS) || BUILDFLAG(IS_LACROS)
+ #if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
 @@ -406,11 +406,11 @@ struct BASE_EXPORT SystemMemoryInfoKB {
  // Exposed for memory debugging widget.
  BASE_EXPORT bool GetSystemMemoryInfo(SystemMemoryInfoKB* meminfo);
@@ -151,7 +151,7 @@
 +#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD) ||
          // defined(OS_AIX)
  
- #if defined(OS_CHROMEOS) || BUILDFLAG(IS_LACROS)
+ #if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
 @@ -597,7 +597,7 @@ class BASE_EXPORT SystemMetrics {
    FRIEND_TEST_ALL_PREFIXES(SystemMetricsTest, SystemMetrics);
  
diff --git a/devel/electron11/files/patch-base_process_process__metrics__freebsd.cc b/devel/electron12/files/patch-base_process_process__metrics__freebsd.cc
similarity index 100%
rename from devel/electron11/files/patch-base_process_process__metrics__freebsd.cc
rename to devel/electron12/files/patch-base_process_process__metrics__freebsd.cc
diff --git a/devel/electron11/files/patch-base_process_process__metrics__posix.cc b/devel/electron12/files/patch-base_process_process__metrics__posix.cc
similarity index 100%
rename from devel/electron11/files/patch-base_process_process__metrics__posix.cc
rename to devel/electron12/files/patch-base_process_process__metrics__posix.cc
diff --git a/devel/electron11/files/patch-base_process_process__unittest.cc b/devel/electron12/files/patch-base_process_process__unittest.cc
similarity index 81%
rename from devel/electron11/files/patch-base_process_process__unittest.cc
rename to devel/electron12/files/patch-base_process_process__unittest.cc
index cd96cb8112d3176219eb13853d217cd5e87e99a5..aa90636cc7ec1ed6fe9e91ba74e63983fe024d52 100644
--- a/devel/electron11/files/patch-base_process_process__unittest.cc
+++ b/devel/electron12/files/patch-base_process_process__unittest.cc
@@ -1,6 +1,6 @@
---- base/process/process_unittest.cc.orig	2021-01-07 00:36:18 UTC
+--- base/process/process_unittest.cc.orig	2021-04-14 01:08:36 UTC
 +++ base/process/process_unittest.cc
-@@ -153,7 +153,7 @@ TEST_F(ProcessTest, CreationTimeOtherProcess) {
+@@ -138,7 +138,7 @@ TEST_F(ProcessTest, CreationTimeOtherProcess) {
    // was spawned and a time recorded after it was spawned. However, since the
    // base::Time and process creation clocks don't match, tolerate some error.
    constexpr base::TimeDelta kTolerance =
diff --git a/devel/electron11/files/patch-base_process_process__util__unittest.cc b/devel/electron12/files/patch-base_process_process__util__unittest.cc
similarity index 80%
rename from devel/electron11/files/patch-base_process_process__util__unittest.cc
rename to devel/electron12/files/patch-base_process_process__util__unittest.cc
index a0fdfd1dda29f0122d2d456a9d00991c98c04afd..6bf2090fc847889086cf506a1e9ae5f6388c79dd 100644
--- a/devel/electron11/files/patch-base_process_process__util__unittest.cc
+++ b/devel/electron12/files/patch-base_process_process__util__unittest.cc
@@ -1,6 +1,6 @@
---- base/process/process_util_unittest.cc.orig	2021-01-07 00:36:18 UTC
+--- base/process/process_util_unittest.cc.orig	2021-04-14 01:08:36 UTC
 +++ base/process/process_util_unittest.cc
-@@ -1307,11 +1307,11 @@ std::string TestLaunchProcess(const CommandLine& cmdli
+@@ -1308,11 +1308,11 @@ std::string TestLaunchProcess(const CommandLine& cmdli
    options.fds_to_remap.emplace_back(fds[1], STDOUT_FILENO);
  #endif  // defined(OS_WIN)
  
diff --git a/devel/electron11/files/patch-base_profiler_register__context.h b/devel/electron12/files/patch-base_profiler_register__context.h
similarity index 100%
rename from devel/electron11/files/patch-base_profiler_register__context.h
rename to devel/electron12/files/patch-base_profiler_register__context.h
diff --git a/devel/electron11/files/patch-base_profiler_sampling__profiler__thread__token.cc b/devel/electron12/files/patch-base_profiler_sampling__profiler__thread__token.cc
similarity index 100%
rename from devel/electron11/files/patch-base_profiler_sampling__profiler__thread__token.cc
rename to devel/electron12/files/patch-base_profiler_sampling__profiler__thread__token.cc
diff --git a/devel/electron11/files/patch-base_profiler_sampling__profiler__thread__token.h b/devel/electron12/files/patch-base_profiler_sampling__profiler__thread__token.h
similarity index 100%
rename from devel/electron11/files/patch-base_profiler_sampling__profiler__thread__token.h
rename to devel/electron12/files/patch-base_profiler_sampling__profiler__thread__token.h
diff --git a/devel/electron11/files/patch-base_profiler_stack__copier__signal.cc b/devel/electron12/files/patch-base_profiler_stack__copier__signal.cc
similarity index 88%
rename from devel/electron11/files/patch-base_profiler_stack__copier__signal.cc
rename to devel/electron12/files/patch-base_profiler_stack__copier__signal.cc
index b39af9d32855cdf00ac261660b9d0cba9adfd549..918229b4aa82d665ed5d8184251f304f7990393a 100644
--- a/devel/electron11/files/patch-base_profiler_stack__copier__signal.cc
+++ b/devel/electron12/files/patch-base_profiler_stack__copier__signal.cc
@@ -1,4 +1,4 @@
---- base/profiler/stack_copier_signal.cc.orig	2021-01-07 00:36:18 UTC
+--- base/profiler/stack_copier_signal.cc.orig	2021-04-14 01:08:36 UTC
 +++ base/profiler/stack_copier_signal.cc
 @@ -4,7 +4,14 @@
  
@@ -15,7 +15,7 @@
  #include <signal.h>
  #include <sys/ucontext.h>
  #include <syscall.h>
-@@ -34,8 +41,13 @@ class AsyncSafeWaitableEvent {
+@@ -35,8 +42,13 @@ class AsyncSafeWaitableEvent {
      // for a pthread mutex. So, also check the condition.
      while (true) {
        int res =
@@ -29,7 +29,7 @@
        if (futex_.load(std::memory_order_acquire) != 0)
          return true;
        if (res != 0)
-@@ -45,8 +57,12 @@ class AsyncSafeWaitableEvent {
+@@ -46,8 +58,12 @@ class AsyncSafeWaitableEvent {
  
    void Signal() {
      futex_.store(1, std::memory_order_release);
@@ -42,7 +42,7 @@
    }
  
   private:
-@@ -216,11 +232,18 @@ bool StackCopierSignal::CopyStack(StackBuffer* stack_b
+@@ -221,11 +237,18 @@ bool StackCopierSignal::CopyStack(StackBuffer* stack_b
      if (!scoped_sigaction.succeeded())
        return false;
  
diff --git a/devel/electron11/files/patch-base_profiler_stack__sampling__profiler__test__util.cc b/devel/electron12/files/patch-base_profiler_stack__sampling__profiler__test__util.cc
similarity index 100%
rename from devel/electron11/files/patch-base_profiler_stack__sampling__profiler__test__util.cc
rename to devel/electron12/files/patch-base_profiler_stack__sampling__profiler__test__util.cc
diff --git a/devel/electron11/files/patch-base_profiler_stack__sampling__profiler__unittest.cc b/devel/electron12/files/patch-base_profiler_stack__sampling__profiler__unittest.cc
similarity index 100%
rename from devel/electron11/files/patch-base_profiler_stack__sampling__profiler__unittest.cc
rename to devel/electron12/files/patch-base_profiler_stack__sampling__profiler__unittest.cc
diff --git a/devel/electron11/files/patch-base_profiler_thread__delegate__posix.cc b/devel/electron12/files/patch-base_profiler_thread__delegate__posix.cc
similarity index 100%
rename from devel/electron11/files/patch-base_profiler_thread__delegate__posix.cc
rename to devel/electron12/files/patch-base_profiler_thread__delegate__posix.cc
diff --git a/devel/electron11/files/patch-base_sampling__heap__profiler_sampling__heap__profiler.cc b/devel/electron12/files/patch-base_sampling__heap__profiler_sampling__heap__profiler.cc
similarity index 100%
rename from devel/electron11/files/patch-base_sampling__heap__profiler_sampling__heap__profiler.cc
rename to devel/electron12/files/patch-base_sampling__heap__profiler_sampling__heap__profiler.cc
diff --git a/devel/electron11/files/patch-base_security__unittest.cc b/devel/electron12/files/patch-base_security__unittest.cc
similarity index 100%
rename from devel/electron11/files/patch-base_security__unittest.cc
rename to devel/electron12/files/patch-base_security__unittest.cc
diff --git a/devel/electron11/files/patch-base_strings_safe__sprintf__unittest.cc b/devel/electron12/files/patch-base_strings_safe__sprintf__unittest.cc
similarity index 100%
rename from devel/electron11/files/patch-base_strings_safe__sprintf__unittest.cc
rename to devel/electron12/files/patch-base_strings_safe__sprintf__unittest.cc
diff --git a/devel/electron11/files/patch-base_strings_sys__string__conversions__unittest.cc b/devel/electron12/files/patch-base_strings_sys__string__conversions__unittest.cc
similarity index 100%
rename from devel/electron11/files/patch-base_strings_sys__string__conversions__unittest.cc
rename to devel/electron12/files/patch-base_strings_sys__string__conversions__unittest.cc
diff --git a/devel/electron11/files/patch-base_synchronization_lock__impl.h b/devel/electron12/files/patch-base_synchronization_lock__impl.h
similarity index 100%
rename from devel/electron11/files/patch-base_synchronization_lock__impl.h
rename to devel/electron12/files/patch-base_synchronization_lock__impl.h
diff --git a/devel/electron11/files/patch-base_syslog__logging.cc b/devel/electron12/files/patch-base_syslog__logging.cc
similarity index 100%
rename from devel/electron11/files/patch-base_syslog__logging.cc
rename to devel/electron12/files/patch-base_syslog__logging.cc
diff --git a/devel/electron11/files/patch-base_system_sys__info.cc b/devel/electron12/files/patch-base_system_sys__info.cc
similarity index 68%
rename from devel/electron11/files/patch-base_system_sys__info.cc
rename to devel/electron12/files/patch-base_system_sys__info.cc
index d7e8ddfddf48975613508ad547fc4f19ea460f71..89bb86970d2b6d2341d356fe170e5adeb0758bb2 100644
--- a/devel/electron11/files/patch-base_system_sys__info.cc
+++ b/devel/electron12/files/patch-base_system_sys__info.cc
@@ -1,7 +1,7 @@
---- base/system/sys_info.cc.orig	2021-01-07 00:36:18 UTC
+--- base/system/sys_info.cc.orig	2021-04-14 01:08:36 UTC
 +++ base/system/sys_info.cc
-@@ -104,7 +104,7 @@ void SysInfo::GetHardwareInfo(base::OnceCallback<void(
- #elif defined(OS_ANDROID) || defined(OS_APPLE)
+@@ -94,7 +94,7 @@ void SysInfo::GetHardwareInfo(base::OnceCallback<void(
+ #if defined(OS_WIN) || defined(OS_ANDROID) || defined(OS_APPLE)
    base::ThreadPool::PostTaskAndReplyWithResult(
        FROM_HERE, {}, base::BindOnce(&GetHardwareInfoSync), std::move(callback));
 -#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
diff --git a/devel/electron11/files/patch-base_system_sys__info.h b/devel/electron12/files/patch-base_system_sys__info.h
similarity index 100%
rename from devel/electron11/files/patch-base_system_sys__info.h
rename to devel/electron12/files/patch-base_system_sys__info.h
diff --git a/devel/electron11/files/patch-base_system_sys__info__freebsd.cc b/devel/electron12/files/patch-base_system_sys__info__freebsd.cc
similarity index 100%
rename from devel/electron11/files/patch-base_system_sys__info__freebsd.cc
rename to devel/electron12/files/patch-base_system_sys__info__freebsd.cc
diff --git a/devel/electron12/files/patch-base_system_sys__info__posix.cc b/devel/electron12/files/patch-base_system_sys__info__posix.cc
new file mode 100644
index 0000000000000000000000000000000000000000..d2321cfe01c54c424edcb63f392d696036a6841a
--- /dev/null
+++ b/devel/electron12/files/patch-base_system_sys__info__posix.cc
@@ -0,0 +1,23 @@
+--- base/system/sys_info_posix.cc.orig	2021-04-14 01:08:36 UTC
++++ base/system/sys_info_posix.cc
+@@ -25,6 +25,11 @@
+ #if defined(OS_ANDROID)
+ #include <sys/vfs.h>
+ #define statvfs statfs  // Android uses a statvfs-like statfs struct and call.
++#elif defined(OS_BSD)
++#include <sys/param.h>
++#include <sys/mount.h>
++#define statvfs statfs
++#define f_frsize f_bsize
+ #else
+ #include <sys/statvfs.h>
+ #endif
+@@ -224,6 +229,8 @@ std::string SysInfo::OperatingSystemArchitecture() {
+     arch = "x86";
+   } else if (arch == "amd64") {
+     arch = "x86_64";
++  } else if (arch == "arm64") {
++    arch = "aarch64";
+   } else if (std::string(info.sysname) == "AIX") {
+     arch = "ppc64";
+   }
diff --git a/devel/electron11/files/patch-base_system_sys__info__unittest.cc b/devel/electron12/files/patch-base_system_sys__info__unittest.cc
similarity index 75%
rename from devel/electron11/files/patch-base_system_sys__info__unittest.cc
rename to devel/electron12/files/patch-base_system_sys__info__unittest.cc
index 40f9e10d3a2e8746ce94425b725cfdb7b55a2c8e..3289fede43d92bfc36cecbccda8cb5bbaa4749ef 100644
--- a/devel/electron11/files/patch-base_system_sys__info__unittest.cc
+++ b/devel/electron12/files/patch-base_system_sys__info__unittest.cc
@@ -1,6 +1,6 @@
---- base/system/sys_info_unittest.cc.orig	2021-01-07 00:36:18 UTC
+--- base/system/sys_info_unittest.cc.orig	2021-04-14 01:08:36 UTC
 +++ base/system/sys_info_unittest.cc
-@@ -50,13 +50,13 @@ TEST_F(SysInfoTest, AmountOfMem) {
+@@ -62,13 +62,13 @@ TEST_F(SysInfoTest, AmountOfMem) {
    EXPECT_GE(SysInfo::AmountOfVirtualMemory(), 0);
  }
  
@@ -17,25 +17,25 @@
  TEST_F(SysInfoTest, MAYBE_AmountOfAvailablePhysicalMemory) {
    // Note: info is in _K_bytes.
    SystemMemoryInfoKB info;
-@@ -87,7 +87,7 @@ TEST_F(SysInfoTest, MAYBE_AmountOfAvailablePhysicalMem
+@@ -99,7 +99,7 @@ TEST_F(SysInfoTest, MAYBE_AmountOfAvailablePhysicalMem
    EXPECT_GT(amount, static_cast<int64_t>(info.free) * 1024);
    EXPECT_LT(amount / 1024, info.total);
  }
 -#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
-+#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSDD)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
  
- #if defined(OS_FUCHSIA)
- // TODO(crbug.com/851734): Implementation depends on statvfs, which is not
-@@ -117,7 +117,7 @@ TEST_F(SysInfoTest, MAYBE_AmountOfTotalDiskSpace) {
-   EXPECT_GT(SysInfo::AmountOfTotalDiskSpace(tmp_path), 0) << tmp_path.value();
+ TEST_F(SysInfoTest, AmountOfFreeDiskSpace) {
+   // We aren't actually testing that it's correct, just that it's sane.
+@@ -149,7 +149,7 @@ TEST_F(SysInfoTest, NestedVolumesAmountOfTotalDiskSpac
  }
+ #endif  // defined(OS_FUCHSIA)
  
 -#if defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) || \
 +#if defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) || defined(OS_BSD) || \
      defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
  TEST_F(SysInfoTest, OperatingSystemVersionNumbers) {
    int32_t os_major_version = -1;
-@@ -178,7 +178,7 @@ TEST_F(SysInfoTest, GetHardwareInfo) {
+@@ -210,7 +210,7 @@ TEST_F(SysInfoTest, GetHardwareInfo) {
    EXPECT_TRUE(IsStringUTF8(hardware_info->model));
    bool empty_result_expected =
  #if defined(OS_ANDROID) || defined(OS_APPLE) || defined(OS_WIN) || \
diff --git a/devel/electron11/files/patch-base_task_thread__pool_environment__config__unittest.cc b/devel/electron12/files/patch-base_task_thread__pool_environment__config__unittest.cc
similarity index 100%
rename from devel/electron11/files/patch-base_task_thread__pool_environment__config__unittest.cc
rename to devel/electron12/files/patch-base_task_thread__pool_environment__config__unittest.cc
diff --git a/devel/electron11/files/patch-base_test_BUILD.gn b/devel/electron12/files/patch-base_test_BUILD.gn
similarity index 79%
rename from devel/electron11/files/patch-base_test_BUILD.gn
rename to devel/electron12/files/patch-base_test_BUILD.gn
index 68d0c04140cf5965873da6cefbd497779686070e..1920bef8ef2e71dcc310e813eeb7f4f6c16c8793 100644
--- a/devel/electron11/files/patch-base_test_BUILD.gn
+++ b/devel/electron12/files/patch-base_test_BUILD.gn
@@ -1,6 +1,6 @@
---- base/test/BUILD.gn.orig	2021-01-07 00:36:18 UTC
+--- base/test/BUILD.gn.orig	2021-04-14 01:08:36 UTC
 +++ base/test/BUILD.gn
-@@ -415,7 +415,11 @@ if (is_linux || is_chromeos) {
+@@ -428,7 +428,11 @@ if (is_linux || is_chromeos) {
  
    copy("fonts_conf") {
      sources = [ "fonts.conf" ]
diff --git a/devel/electron11/files/patch-base_test_launcher_test__launcher.cc b/devel/electron12/files/patch-base_test_launcher_test__launcher.cc
similarity index 78%
rename from devel/electron11/files/patch-base_test_launcher_test__launcher.cc
rename to devel/electron12/files/patch-base_test_launcher_test__launcher.cc
index ab021b33faf7c15cacae9ce5e9f539bdbf95bd26..bc657bd9ad20cae4f5bcbe4d9cd1d425ddc7dcee 100644
--- a/devel/electron11/files/patch-base_test_launcher_test__launcher.cc
+++ b/devel/electron12/files/patch-base_test_launcher_test__launcher.cc
@@ -1,4 +1,4 @@
---- base/test/launcher/test_launcher.cc.orig	2021-01-07 00:36:18 UTC
+--- base/test/launcher/test_launcher.cc.orig	2021-04-14 01:08:36 UTC
 +++ base/test/launcher/test_launcher.cc
 @@ -58,6 +58,7 @@
  #include "testing/gtest/include/gtest/gtest.h"
@@ -8,7 +8,7 @@
  #include <fcntl.h>
  
  #include "base/files/file_descriptor_watcher_posix.h"
-@@ -588,7 +589,7 @@ ChildProcessResults DoLaunchChildTestProcess(
+@@ -599,7 +600,7 @@ ChildProcessResults DoLaunchChildTestProcess(
  #if !defined(OS_FUCHSIA)
    options.new_process_group = true;
  #endif
@@ -17,7 +17,7 @@
    options.kill_on_parent_death = true;
  #endif
  
-@@ -1529,7 +1530,7 @@ bool TestLauncher::Init(CommandLine* command_line) {
+@@ -1516,7 +1517,7 @@ bool TestLauncher::Init(CommandLine* command_line) {
    results_tracker_.AddGlobalTag("OS_IOS");
  #endif
  
diff --git a/devel/electron11/files/patch-base_test_test__file__util__posix.cc b/devel/electron12/files/patch-base_test_test__file__util__posix.cc
similarity index 100%
rename from devel/electron11/files/patch-base_test_test__file__util__posix.cc
rename to devel/electron12/files/patch-base_test_test__file__util__posix.cc
diff --git a/devel/electron11/files/patch-base_test_test__suite.cc b/devel/electron12/files/patch-base_test_test__suite.cc
similarity index 100%
rename from devel/electron11/files/patch-base_test_test__suite.cc
rename to devel/electron12/files/patch-base_test_test__suite.cc
diff --git a/devel/electron11/files/patch-base_third__party_libevent_BUILD.gn b/devel/electron12/files/patch-base_third__party_libevent_BUILD.gn
similarity index 100%
rename from devel/electron11/files/patch-base_third__party_libevent_BUILD.gn
rename to devel/electron12/files/patch-base_third__party_libevent_BUILD.gn
diff --git a/devel/electron11/files/patch-base_threading_platform__thread.h b/devel/electron12/files/patch-base_threading_platform__thread.h
similarity index 80%
rename from devel/electron11/files/patch-base_threading_platform__thread.h
rename to devel/electron12/files/patch-base_threading_platform__thread.h
index 083ae5e5a057ff29124c77ff48d51139579124e2..2abef05beb90e4f075c58a1d500787518fc26fb9 100644
--- a/devel/electron11/files/patch-base_threading_platform__thread.h
+++ b/devel/electron12/files/patch-base_threading_platform__thread.h
@@ -1,6 +1,6 @@
---- base/threading/platform_thread.h.orig	2021-01-07 00:36:18 UTC
+--- base/threading/platform_thread.h.orig	2021-04-14 01:08:36 UTC
 +++ base/threading/platform_thread.h
-@@ -230,7 +230,7 @@ class BASE_EXPORT PlatformThread {
+@@ -231,7 +231,7 @@ class BASE_EXPORT PlatformThread {
    // Returns a realtime period provided by |delegate|.
    static TimeDelta GetRealtimePeriod(Delegate* delegate);
  
diff --git a/devel/electron11/files/patch-base_threading_platform__thread__internal__posix.h b/devel/electron12/files/patch-base_threading_platform__thread__internal__posix.h
similarity index 100%
rename from devel/electron11/files/patch-base_threading_platform__thread__internal__posix.h
rename to devel/electron12/files/patch-base_threading_platform__thread__internal__posix.h
diff --git a/devel/electron11/files/patch-base_threading_platform__thread__linux.cc b/devel/electron12/files/patch-base_threading_platform__thread__linux.cc
similarity index 82%
rename from devel/electron11/files/patch-base_threading_platform__thread__linux.cc
rename to devel/electron12/files/patch-base_threading_platform__thread__linux.cc
index 961985c4fefdcaa788e1a2976f8168f486550320..4fabfe1ef5240dba004dd79b6e6321f7419c94a2 100644
--- a/devel/electron11/files/patch-base_threading_platform__thread__linux.cc
+++ b/devel/electron12/files/patch-base_threading_platform__thread__linux.cc
@@ -1,6 +1,6 @@
---- base/threading/platform_thread_linux.cc.orig	2021-01-07 00:36:18 UTC
+--- base/threading/platform_thread_linux.cc.orig	2021-04-14 01:08:36 UTC
 +++ base/threading/platform_thread_linux.cc
-@@ -24,7 +24,9 @@
+@@ -27,7 +27,9 @@
  
  #if !defined(OS_NACL) && !defined(OS_AIX)
  #include <pthread.h>
@@ -10,7 +10,7 @@
  #include <sys/resource.h>
  #include <sys/time.h>
  #include <sys/types.h>
-@@ -264,7 +266,7 @@ const ThreadPriorityToNiceValuePair kThreadPriorityToN
+@@ -298,7 +300,7 @@ const ThreadPriorityToNiceValuePair kThreadPriorityToN
  
  Optional<bool> CanIncreaseCurrentThreadPriorityForPlatform(
      ThreadPriority priority) {
@@ -19,7 +19,7 @@
    // A non-zero soft-limit on RLIMIT_RTPRIO is required to be allowed to invoke
    // pthread_setschedparam in SetCurrentThreadPriorityForPlatform().
    struct rlimit rlim;
-@@ -314,7 +316,7 @@ Optional<ThreadPriority> GetCurrentThreadPriorityForPl
+@@ -348,7 +350,7 @@ Optional<ThreadPriority> GetCurrentThreadPriorityForPl
  void PlatformThread::SetName(const std::string& name) {
    ThreadIdNameManager::GetInstance()->SetName(name);
  
diff --git a/devel/electron11/files/patch-base_threading_platform__thread__posix.cc b/devel/electron12/files/patch-base_threading_platform__thread__posix.cc
similarity index 94%
rename from devel/electron11/files/patch-base_threading_platform__thread__posix.cc
rename to devel/electron12/files/patch-base_threading_platform__thread__posix.cc
index 4e2b3ef267faccb2c8a9c5e2326a264e41613762..389af94bf55902fd79d3ea158665dbf9db441e84 100644
--- a/devel/electron11/files/patch-base_threading_platform__thread__posix.cc
+++ b/devel/electron12/files/patch-base_threading_platform__thread__posix.cc
@@ -1,4 +1,4 @@
---- base/threading/platform_thread_posix.cc.orig	2021-01-07 00:36:18 UTC
+--- base/threading/platform_thread_posix.cc.orig	2021-04-14 01:08:36 UTC
 +++ base/threading/platform_thread_posix.cc
 @@ -32,6 +32,10 @@
  #include <sys/syscall.h>
@@ -18,14 +18,14 @@
 -#if defined(OS_LINUX) || defined(OS_CHROMEOS)
 +#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
- // Store the thread ids in local storage since calling the SWI can
+ // Store the thread ids in local storage since calling the SWI can be
  // expensive and PlatformThread::CurrentId is used liberally. Clear
 @@ -159,11 +163,11 @@ class InitAtFork {
    InitAtFork() { pthread_atfork(nullptr, nullptr, internal::ClearTidCache); }
  };
  
 -#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSSD)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
  }  // namespace
  
diff --git a/devel/electron11/files/patch-base_threading_platform__thread__unittest.cc b/devel/electron12/files/patch-base_threading_platform__thread__unittest.cc
similarity index 86%
rename from devel/electron11/files/patch-base_threading_platform__thread__unittest.cc
rename to devel/electron12/files/patch-base_threading_platform__thread__unittest.cc
index d855c6c4f35e675386d7e73fd7f36f798650fb2d..810508a99f3e04e397ac8058799b370ce6cf1c6d 100644
--- a/devel/electron11/files/patch-base_threading_platform__thread__unittest.cc
+++ b/devel/electron12/files/patch-base_threading_platform__thread__unittest.cc
@@ -1,6 +1,6 @@
---- base/threading/platform_thread_unittest.cc.orig	2021-01-07 00:36:18 UTC
+--- base/threading/platform_thread_unittest.cc.orig	2021-04-14 01:08:36 UTC
 +++ base/threading/platform_thread_unittest.cc
-@@ -311,7 +311,7 @@ TEST(PlatformThreadTest,
+@@ -312,7 +312,7 @@ TEST(PlatformThreadTest,
  // and hardcodes what we know. Please inform scheduler-dev@chromium.org if this
  // proprerty changes for a given platform.
  TEST(PlatformThreadTest, CanIncreaseThreadPriority) {
@@ -9,7 +9,7 @@
    // On Ubuntu, RLIMIT_NICE and RLIMIT_RTPRIO are 0 by default, so we won't be
    // able to increase priority to any level.
    constexpr bool kCanIncreasePriority = false;
-@@ -405,9 +405,9 @@ TEST(PlatformThreadTest, SetHugeThreadName) {
+@@ -406,9 +406,9 @@ TEST(PlatformThreadTest, SetHugeThreadName) {
  
  TEST(PlatformThreadTest, GetDefaultThreadStackSize) {
    size_t stack_size = PlatformThread::GetDefaultThreadStackSize();
diff --git a/devel/electron11/files/patch-base_threading_scoped__blocking__call__unittest.cc b/devel/electron12/files/patch-base_threading_scoped__blocking__call__unittest.cc
similarity index 100%
rename from devel/electron11/files/patch-base_threading_scoped__blocking__call__unittest.cc
rename to devel/electron12/files/patch-base_threading_scoped__blocking__call__unittest.cc
diff --git a/devel/electron11/files/patch-base_threading_thread__local__storage__unittest.cc b/devel/electron12/files/patch-base_threading_thread__local__storage__unittest.cc
similarity index 100%
rename from devel/electron11/files/patch-base_threading_thread__local__storage__unittest.cc
rename to devel/electron12/files/patch-base_threading_thread__local__storage__unittest.cc
diff --git a/devel/electron12/files/patch-base_threading_thread__task__runner__handle.cc b/devel/electron12/files/patch-base_threading_thread__task__runner__handle.cc
new file mode 100644
index 0000000000000000000000000000000000000000..f5574c75fdbbf199bcfe5b7040c97095a1aa8649
--- /dev/null
+++ b/devel/electron12/files/patch-base_threading_thread__task__runner__handle.cc
@@ -0,0 +1,26 @@
+--- base/threading/thread_task_runner_handle.cc.orig	2021-04-14 01:08:36 UTC
++++ base/threading/thread_task_runner_handle.cc
+@@ -8,6 +8,7 @@
+ #include <utility>
+ 
+ #include "base/bind.h"
++#include "base/callback_helpers.h"
+ #include "base/check_op.h"
+ #include "base/lazy_instance.h"
+ #include "base/run_loop.h"
+@@ -33,6 +34,7 @@ const scoped_refptr<SingleThreadTaskRunner>& ThreadTas
+   return current->task_runner_;
+ }
+ 
++#if defined(OS_BSD)
+ // static
+ bool ThreadTaskRunnerHandle::IsSet() {
+   return !!thread_task_runner_tls.Pointer()->Get();
+@@ -80,6 +82,7 @@ ThreadTaskRunnerHandleOverride::ThreadTaskRunnerHandle
+   if (!allow_nested_runloop)
+     no_running_during_override_.emplace();
+ }
++#endif
+ 
+ ThreadTaskRunnerHandleOverride::~ThreadTaskRunnerHandleOverride() {
+   if (task_runner_to_restore_) {
diff --git a/devel/electron11/files/patch-base_time_time__unittest.cc b/devel/electron12/files/patch-base_time_time__unittest.cc
similarity index 100%
rename from devel/electron11/files/patch-base_time_time__unittest.cc
rename to devel/electron12/files/patch-base_time_time__unittest.cc
diff --git a/devel/electron12/files/patch-base_trace__event_heap__profiler__allocation__context__tracker.cc b/devel/electron12/files/patch-base_trace__event_heap__profiler__allocation__context__tracker.cc
new file mode 100644
index 0000000000000000000000000000000000000000..fe431e31b844f53c186def065b7847ee19a12a67
--- /dev/null
+++ b/devel/electron12/files/patch-base_trace__event_heap__profiler__allocation__context__tracker.cc
@@ -0,0 +1,38 @@
+--- base/trace_event/heap_profiler_allocation_context_tracker.cc.orig	2021-04-14 01:08:36 UTC
++++ base/trace_event/heap_profiler_allocation_context_tracker.cc
+@@ -30,6 +30,10 @@
+ #include <sys/prctl.h>
+ #endif
+ 
++#if defined(OS_BSD)
++#include <pthread_np.h>
++#endif
++
+ namespace base {
+ namespace trace_event {
+ 
+@@ -61,13 +65,23 @@ ThreadLocalStorage::Slot& AllocationContextTrackerTLS(
+ // with id. This function intentionally leaks the allocated strings since they
+ // are used to tag allocations even after the thread dies.
+ const char* GetAndLeakThreadName() {
+-  char name[16];
++#if defined(OS_BSD)
++  constexpr size_t kBufferLen = 64;
++#else
++  constexpr size_t kBufferLen = 16;
++#endif
++  char name[kBufferLen];
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
+   // If the thread name is not set, try to get it from prctl. Thread name might
+   // not be set in cases where the thread started before heap profiling was
+   // enabled.
+   int err = prctl(PR_GET_NAME, name);
+   if (!err) {
++    return strdup(name);
++  }
++#elif defined(OS_BSD) && __FreeBSD__ >= 12
++  pthread_get_name_np(pthread_self(), name, kBufferLen);
++  if (*name != '\0') {
+     return strdup(name);
+   }
+ #endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
diff --git a/devel/electron11/files/patch-base_trace__event_malloc__dump__provider.cc b/devel/electron12/files/patch-base_trace__event_malloc__dump__provider.cc
similarity index 78%
rename from devel/electron11/files/patch-base_trace__event_malloc__dump__provider.cc
rename to devel/electron12/files/patch-base_trace__event_malloc__dump__provider.cc
index beb5858fd29146eeedb3e284339602dd0efe0208..f9d03701537bb437db3b000403929870fe366ef7 100644
--- a/devel/electron11/files/patch-base_trace__event_malloc__dump__provider.cc
+++ b/devel/electron12/files/patch-base_trace__event_malloc__dump__provider.cc
@@ -1,4 +1,4 @@
---- base/trace_event/malloc_dump_provider.cc.orig	2021-01-07 00:36:18 UTC
+--- base/trace_event/malloc_dump_provider.cc.orig	2021-04-14 01:08:36 UTC
 +++ base/trace_event/malloc_dump_provider.cc
 @@ -17,6 +17,8 @@
  
@@ -9,7 +9,7 @@
  #else
  #include <malloc.h>
  #endif
-@@ -132,6 +134,9 @@ bool MallocDumpProvider::OnMemoryDump(const MemoryDump
+@@ -184,6 +186,9 @@ bool MallocDumpProvider::OnMemoryDump(const MemoryDump
    }
  #elif defined(OS_FUCHSIA)
  // TODO(fuchsia): Port, see https://crbug.com/706592.
diff --git a/devel/electron11/files/patch-base_trace__event_process__memory__dump.cc b/devel/electron12/files/patch-base_trace__event_process__memory__dump.cc
similarity index 74%
rename from devel/electron11/files/patch-base_trace__event_process__memory__dump.cc
rename to devel/electron12/files/patch-base_trace__event_process__memory__dump.cc
index 4111bdac8fb9f2a712086b4309247eabe2f947c3..d97249c00d0c6a08d85d139cf0212de947177804 100644
--- a/devel/electron11/files/patch-base_trace__event_process__memory__dump.cc
+++ b/devel/electron12/files/patch-base_trace__event_process__memory__dump.cc
@@ -1,6 +1,6 @@
---- base/trace_event/process_memory_dump.cc.orig	2021-01-07 00:36:18 UTC
+--- base/trace_event/process_memory_dump.cc.orig	2021-04-14 01:08:36 UTC
 +++ base/trace_event/process_memory_dump.cc
-@@ -95,7 +95,7 @@ size_t ProcessMemoryDump::CountResidentBytes(void* sta
+@@ -101,7 +101,7 @@ base::Optional<size_t> ProcessMemoryDump::CountResiden
  #if defined(OS_WIN)
    std::unique_ptr<PSAPI_WORKING_SET_EX_INFORMATION[]> vec(
        new PSAPI_WORKING_SET_EX_INFORMATION[max_vec_size]);
diff --git a/devel/electron12/files/patch-base_util_memory__pressure_system__memory__pressure__evaluator.cc b/devel/electron12/files/patch-base_util_memory__pressure_system__memory__pressure__evaluator.cc
new file mode 100644
index 0000000000000000000000000000000000000000..a1338b96ee018545a9e09e75e2db56c178b4a5e6
--- /dev/null
+++ b/devel/electron12/files/patch-base_util_memory__pressure_system__memory__pressure__evaluator.cc
@@ -0,0 +1,20 @@
+--- base/util/memory_pressure/system_memory_pressure_evaluator.cc.orig	2021-04-14 01:08:36 UTC
++++ base/util/memory_pressure/system_memory_pressure_evaluator.cc
+@@ -17,7 +17,7 @@
+ #include "base/win/windows_version.h"
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #include "base/util/memory_pressure/system_memory_pressure_evaluator_linux.h"
+ #endif
+ 
+@@ -50,7 +50,7 @@ SystemMemoryPressureEvaluator::CreateDefaultSystemEval
+   return evaluator;
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   return std::make_unique<util::os_linux::SystemMemoryPressureEvaluator>(
+       monitor->CreateVoter());
+ #endif
diff --git a/devel/electron12/files/patch-build_config_BUILD.gn b/devel/electron12/files/patch-build_config_BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..a92651209ad9477f1c9e8af33f494e05367caaec
--- /dev/null
+++ b/devel/electron12/files/patch-build_config_BUILD.gn
@@ -0,0 +1,21 @@
+--- build/config/BUILD.gn.orig	2021-04-14 01:08:36 UTC
++++ build/config/BUILD.gn
+@@ -232,9 +232,7 @@ config("default_libs") {
+     ]
+   } else if (is_linux || is_chromeos) {
+     libs = [
+-      "dl",
+       "pthread",
+-      "rt",
+     ]
+   }
+ }
+@@ -313,7 +311,7 @@ config("executable_config") {
+       "//build/config/ios:ios_dynamic_flags",
+       "//build/config/ios:ios_executable_flags",
+     ]
+-  } else if (is_linux || is_chromeos || is_android || current_os == "aix") {
++  } else if (is_linux || is_bsd || is_chromeos || is_android || current_os == "aix") {
+     configs += [ "//build/config/gcc:executable_config" ]
+     if (is_chromecast) {
+       configs += [ "//build/config/chromecast:executable_config" ]
diff --git a/devel/electron11/files/patch-build_config_BUILDCONFIG.gn b/devel/electron12/files/patch-build_config_BUILDCONFIG.gn
similarity index 64%
rename from devel/electron11/files/patch-build_config_BUILDCONFIG.gn
rename to devel/electron12/files/patch-build_config_BUILDCONFIG.gn
index 013ae30556ad4896a138228fbe962aaa23c48471..f24342bf7560f62e9c365c969c31d1b3c1cd1a47 100644
--- a/devel/electron11/files/patch-build_config_BUILDCONFIG.gn
+++ b/devel/electron12/files/patch-build_config_BUILDCONFIG.gn
@@ -1,19 +1,6 @@
---- build/config/BUILDCONFIG.gn.orig	2021-01-25 11:26:59 UTC
+--- build/config/BUILDCONFIG.gn.orig	2021-04-22 07:51:50 UTC
 +++ build/config/BUILDCONFIG.gn
-@@ -134,10 +134,10 @@ declare_args() {
-   is_official_build = false
- 
-   # Whether we're a traditional desktop unix.
--  is_desktop_linux = current_os == "linux"
-+  is_desktop_linux = current_os == "linux" || current_os == "freebsd"
- 
-   # Set to true when compiling with the Clang compiler.
--  is_clang = current_os != "linux" ||
-+  is_clang = current_os != "linux" || current_os == "freebsd" ||
-              (current_cpu != "s390x" && current_cpu != "s390" &&
-               current_cpu != "ppc64" && current_cpu != "ppc" &&
-               current_cpu != "mips" && current_cpu != "mips64")
-@@ -189,8 +189,8 @@ if (host_toolchain == "") {
+@@ -197,8 +197,8 @@ if (host_toolchain == "") {
    # TODO(dpranke): Add some sort of assert here that verifies that
    # no toolchain omitted host_toolchain from its toolchain_args().
  
@@ -24,7 +11,7 @@
        host_toolchain = "//build/toolchain/linux:clang_$host_cpu"
      } else if (is_clang) {
        host_toolchain = "//build/toolchain/linux:clang_$host_cpu"
-@@ -227,7 +227,7 @@ if (target_os == "android") {
+@@ -235,7 +235,7 @@ if (target_os == "android") {
    assert(host_os == "linux" || host_os == "mac",
           "Android builds are only supported on Linux and Mac hosts.")
    _default_toolchain = "//build/toolchain/android:android_clang_$target_cpu"
@@ -33,7 +20,7 @@
    # See comments in build/toolchain/cros/BUILD.gn about board compiles.
    if (is_clang) {
      _default_toolchain = "//build/toolchain/linux:clang_$target_cpu"
-@@ -288,10 +288,11 @@ if (custom_toolchain != "") {
+@@ -296,10 +296,11 @@ if (custom_toolchain != "") {
  # current_os value directly.
  
  is_android = current_os == "android"
diff --git a/devel/electron11/files/patch-build_config_compiler_BUILD.gn b/devel/electron12/files/patch-build_config_compiler_BUILD.gn
similarity index 71%
rename from devel/electron11/files/patch-build_config_compiler_BUILD.gn
rename to devel/electron12/files/patch-build_config_compiler_BUILD.gn
index ecb7e389977eb8e21ca6c13b92f97661a18a93e1..25be6e11f409e0e96586c13cf315c25c63164f65 100644
--- a/devel/electron11/files/patch-build_config_compiler_BUILD.gn
+++ b/devel/electron12/files/patch-build_config_compiler_BUILD.gn
@@ -1,6 +1,6 @@
---- build/config/compiler/BUILD.gn.orig	2021-01-07 00:36:18 UTC
+--- build/config/compiler/BUILD.gn.orig	2021-04-14 01:08:36 UTC
 +++ build/config/compiler/BUILD.gn
-@@ -128,7 +128,7 @@ declare_args() {
+@@ -132,7 +132,7 @@ declare_args() {
    #
    # TODO(crbug.com/977230): Enabling this when 'use_xcode_clang' is true may
    # call an old clang that doesn't support auto-init.
@@ -9,7 +9,7 @@
  
    # This argument is to control whether enabling text section splitting in the
    # final binary. When enabled, the separated text sections with prefix
-@@ -291,7 +291,7 @@ config("compiler") {
+@@ -316,7 +316,7 @@ config("compiler") {
      }
  
      # Linker warnings.
@@ -17,8 +17,8 @@
 +    if (fatal_linker_warnings && !is_apple && !is_bsd && current_os != "aix") {
        ldflags += [ "-Wl,--fatal-warnings" ]
      }
-     if (fatal_linker_warnings && is_apple &&
-@@ -389,7 +389,7 @@ config("compiler") {
+     if (fatal_linker_warnings && is_apple) {
+@@ -411,7 +411,7 @@ config("compiler") {
  
      # Compiler instrumentation can introduce dependencies in DSOs to symbols in
      # the executable they are loaded into, so they are unresolved at link-time.
@@ -27,7 +27,7 @@
        ldflags += [
          "-Wl,-z,defs",
          "-Wl,--as-needed",
-@@ -480,7 +480,7 @@ config("compiler") {
+@@ -501,7 +501,7 @@ config("compiler") {
      ldflags += [ "-Wl,-z,keep-text-section-prefix" ]
    }
  
@@ -36,7 +36,7 @@
      cflags += [ "-fcrash-diagnostics-dir=" + clang_diagnostic_dir ]
  
      cflags += [
-@@ -776,7 +776,7 @@ config("compiler_cpu_abi") {
+@@ -796,7 +796,7 @@ config("compiler_cpu_abi") {
          cflags += [ "-mtune=$arm_tune" ]
        }
      } else if (current_cpu == "arm64") {
@@ -45,7 +45,7 @@
          cflags += [ "--target=aarch64-linux-gnu" ]
          ldflags += [ "--target=aarch64-linux-gnu" ]
        }
-@@ -1129,7 +1129,7 @@ config("compiler_deterministic") {
+@@ -1146,7 +1146,7 @@ config("compiler_deterministic") {
        "-Xclang",
        ".",
      ]
@@ -54,7 +54,7 @@
        # We don't use clang -cc1as on Windows (yet? https://crbug.com/762167)
        asmflags = [ "-Wa,-fdebug-compilation-dir,." ]
      }
-@@ -1512,7 +1512,7 @@ config("default_warnings") {
+@@ -1529,7 +1529,7 @@ config("default_warnings") {
          cflags += [ "-Wno-nonportable-include-path" ]
        }
  
@@ -63,7 +63,26 @@
          # Flags NaCl (Clang 3.7) and Xcode 9.2 (Clang clang-900.0.39.2) do not
          # recognize.
          cflags += [
-@@ -1686,7 +1686,7 @@ config("no_chromium_code") {
+@@ -1570,6 +1570,18 @@ config("default_warnings") {
+           cflags += [ "-Wno-max-tokens" ]
+         }
+       }
++
++      if (is_clang && is_bsd) {
++        cflags += [
++          "-Wno-ignored-pragma-optimize",
++          "-Wno-implicit-int-float-conversion",
++          "-Wno-final-dtor-non-final-class",
++          "-Wno-builtin-assume-aligned-alignment",
++          "-Wno-deprecated-copy",
++          "-Wno-thread-safety-analysis",
++          "-Wno-thread-safety-attributes",
++        ]
++      }
+     }
+   }
+ }
+@@ -1699,7 +1711,7 @@ config("no_chromium_code") {
        # suppressing them individually, we just blanket suppress them here.
        "-Wno-unused-variable",
      ]
@@ -72,16 +91,16 @@
        cflags += [
          # TODO(https://crbug.com/1031169): Clean up and enable.
          "-Wno-misleading-indentation",
-@@ -1764,7 +1764,7 @@ config("thin_archive") {
-   # Mac and iOS use the mac-specific "libtool" command, not ar, which doesn't
-   # have a "thin archive" mode (it does accept -T, but it means truncating
-   # archive names to 16 characters, which is not what we want).
--  if ((is_posix && !is_nacl && !is_apple) || is_fuchsia) {
-+  if ((is_posix && !is_nacl && !is_apple && !is_bsd) || is_fuchsia) {
+@@ -1777,7 +1789,7 @@ config("export_dynamic") {
+ config("thin_archive") {
+   # The macOS and iOS default linker ld64 does not support reading thin
+   # archives.
+-  if ((is_posix && !is_nacl && (!is_apple || use_lld)) || is_fuchsia) {
++  if ((is_posix && !is_nacl && (!is_apple || use_lld) && !is_bsd) || is_fuchsia) {
      arflags = [ "-T" ]
    } else if (is_win && use_lld) {
      arflags = [ "/llvmlibthin" ]
-@@ -2297,11 +2297,11 @@ config("symbols") {
+@@ -2318,7 +2330,7 @@ config("symbols") {
      # flag, so we can use use -g1 for pnacl and nacl-clang compiles.
      # gcc nacl is is_nacl && !is_clang, pnacl and nacl-clang are && is_clang.
      if (!is_nacl || is_clang) {
@@ -90,12 +109,7 @@
      }
  
      # TODO(https://crbug.com/1050118): Investigate missing debug info on mac.
--    if (is_clang && !is_nacl && !use_xcode_clang && !is_apple) {
-+    if (is_clang && !is_nacl && !use_xcode_clang && !is_apple && !is_bsd) {
-       cflags += [
-         "-Xclang",
-         "-debug-info-kind=constructor",
-@@ -2339,7 +2339,7 @@ config("symbols") {
+@@ -2350,7 +2362,7 @@ config("symbols") {
      # DWARF info may be corrupt; offsets in a range list entry are in different
      # sections" there.  Maybe just a bug in nacl_switch_32.S.
      if (!is_apple && !is_nacl && current_cpu != "x86" &&
diff --git a/devel/electron12/files/patch-build_config_compiler_compiler.gni b/devel/electron12/files/patch-build_config_compiler_compiler.gni
new file mode 100644
index 0000000000000000000000000000000000000000..4cee40235353225a2c8cd162df6892d967fe3594
--- /dev/null
+++ b/devel/electron12/files/patch-build_config_compiler_compiler.gni
@@ -0,0 +1,11 @@
+--- build/config/compiler/compiler.gni.orig	2021-04-14 01:08:36 UTC
++++ build/config/compiler/compiler.gni
+@@ -201,7 +201,7 @@ declare_args() {
+ 
+ declare_args() {
+   # Whether to use the gold linker from binutils instead of lld or bfd.
+-  use_gold = !use_lld && !(is_chromecast && is_linux &&
++  use_gold = !is_bsd && !use_lld && !(is_chromecast && is_linux &&
+                            (current_cpu == "arm" || current_cpu == "mipsel")) &&
+              (((is_linux || is_chromeos_lacros) &&
+                (current_cpu == "x64" || current_cpu == "x86" ||
diff --git a/devel/electron12/files/patch-build_config_compiler_pgo_pgo.gni b/devel/electron12/files/patch-build_config_compiler_pgo_pgo.gni
new file mode 100644
index 0000000000000000000000000000000000000000..02c05d65664d509fe342f5d1c6659ae40a521380
--- /dev/null
+++ b/devel/electron12/files/patch-build_config_compiler_pgo_pgo.gni
@@ -0,0 +1,11 @@
+--- build/config/compiler/pgo/pgo.gni.orig	2021-04-14 01:08:36 UTC
++++ build/config/compiler/pgo/pgo.gni
+@@ -16,7 +16,7 @@ declare_args() {
+       # TODO(crbug.com/1052397): Remove chromeos_is_browser_only once
+       # target_os switch for lacros-chrome is completed.
+       (is_win || is_mac ||
+-       (is_linux && !chromeos_is_browser_only && !is_chromecast))) {
++       (is_linux && !chromeos_is_browser_only && !is_chromecast && !is_bsd))) {
+     chrome_pgo_phase = 2
+   }
+ 
diff --git a/devel/electron11/files/patch-build_config_features.gni b/devel/electron12/files/patch-build_config_features.gni
similarity index 100%
rename from devel/electron11/files/patch-build_config_features.gni
rename to devel/electron12/files/patch-build_config_features.gni
diff --git a/devel/electron12/files/patch-build_config_freetype_freetype.gni b/devel/electron12/files/patch-build_config_freetype_freetype.gni
new file mode 100644
index 0000000000000000000000000000000000000000..dfe82143481ffc6b7bb2c503d563d7e08882f724
--- /dev/null
+++ b/devel/electron12/files/patch-build_config_freetype_freetype.gni
@@ -0,0 +1,9 @@
+--- build/config/freetype/freetype.gni.orig	2021-04-14 01:08:36 UTC
++++ build/config/freetype/freetype.gni
+@@ -10,5 +10,5 @@ declare_args() {
+   # than version 2.7.1 and have color bitmap support compiled in. WARNING:
+   # System FreeType configurations other than as described WILL INTRODUCE TEXT
+   # RENDERING AND SECURITY REGRESSIONS.
+-  use_system_freetype = false
++  use_system_freetype = true
+ }
diff --git a/devel/electron11/files/patch-build_config_linux_BUILD.gn b/devel/electron12/files/patch-build_config_linux_BUILD.gn
similarity index 61%
rename from devel/electron11/files/patch-build_config_linux_BUILD.gn
rename to devel/electron12/files/patch-build_config_linux_BUILD.gn
index f0eaf7250dcf848284aaf6840a6470faa6dd2748..5a6f4a1a4fb383295ec1e98fa28240d6d2095b38 100644
--- a/devel/electron11/files/patch-build_config_linux_BUILD.gn
+++ b/devel/electron12/files/patch-build_config_linux_BUILD.gn
@@ -1,8 +1,8 @@
---- build/config/linux/BUILD.gn.orig	2021-01-07 00:36:18 UTC
+--- build/config/linux/BUILD.gn.orig	2021-04-14 01:08:36 UTC
 +++ build/config/linux/BUILD.gn
-@@ -30,7 +30,7 @@ config("runtime_library") {
+@@ -32,7 +32,7 @@ config("runtime_library") {
  
-   if ((!(is_chromeos || chromeos_is_browser_only) ||
+   if ((!(is_chromeos_ash || is_chromeos_lacros) ||
         default_toolchain != "//build/toolchain/cros:target") &&
 -      (!use_custom_libcxx || current_cpu == "mipsel")) {
 +      (!use_custom_libcxx || current_cpu == "mipsel") && !is_bsd) {
diff --git a/devel/electron11/files/patch-build_config_linux_pkg-config.py b/devel/electron12/files/patch-build_config_linux_pkg-config.py
similarity index 100%
rename from devel/electron11/files/patch-build_config_linux_pkg-config.py
rename to devel/electron12/files/patch-build_config_linux_pkg-config.py
diff --git a/devel/electron11/files/patch-ui_ozone_ozone.gni b/devel/electron12/files/patch-build_config_ozone.gni
similarity index 60%
rename from devel/electron11/files/patch-ui_ozone_ozone.gni
rename to devel/electron12/files/patch-build_config_ozone.gni
index aeecd1c69416ab6a5c9eedbc0a5b96b441dfe6dd..af79c5cea132f00ae200f2ade76ac3dd841efd9f 100644
--- a/devel/electron11/files/patch-ui_ozone_ozone.gni
+++ b/devel/electron12/files/patch-build_config_ozone.gni
@@ -1,12 +1,12 @@
---- ui/ozone/ozone.gni.orig	2021-01-07 00:37:29 UTC
-+++ ui/ozone/ozone.gni
-@@ -69,6 +69,9 @@ declare_args() {
+--- build/config/ozone.gni.orig	2021-04-14 01:08:36 UTC
++++ build/config/ozone.gni
+@@ -70,6 +70,9 @@ declare_args() {
        ozone_platform = "x11"
        ozone_platform_drm = true
        ozone_platform_x11 = true
 +    } else if (is_bsd) {
 +      ozone_platform = "x11"
 +      ozone_platform_x11 = true
-     } else if (is_desktop_linux) {
+     } else if (is_linux || is_chromeos_lacros) {
        ozone_platform = "x11"
        ozone_platform_wayland = true
diff --git a/devel/electron11/files/patch-build_config_sysroot.gni b/devel/electron12/files/patch-build_config_sysroot.gni
similarity index 100%
rename from devel/electron11/files/patch-build_config_sysroot.gni
rename to devel/electron12/files/patch-build_config_sysroot.gni
diff --git a/devel/electron11/files/patch-build_detect__host__arch.py b/devel/electron12/files/patch-build_detect__host__arch.py
similarity index 100%
rename from devel/electron11/files/patch-build_detect__host__arch.py
rename to devel/electron12/files/patch-build_detect__host__arch.py
diff --git a/devel/electron11/files/patch-build_gn__run__binary.py b/devel/electron12/files/patch-build_gn__run__binary.py
similarity index 100%
rename from devel/electron11/files/patch-build_gn__run__binary.py
rename to devel/electron12/files/patch-build_gn__run__binary.py
diff --git a/devel/electron11/files/patch-build_linux_chrome.map b/devel/electron12/files/patch-build_linux_chrome.map
similarity index 78%
rename from devel/electron11/files/patch-build_linux_chrome.map
rename to devel/electron12/files/patch-build_linux_chrome.map
index 1ab4dced35ea430bf6dfad3047f0788773648810..8ee5a41f77dd810228e933108b182ec315726cd1 100644
--- a/devel/electron11/files/patch-build_linux_chrome.map
+++ b/devel/electron12/files/patch-build_linux_chrome.map
@@ -1,4 +1,4 @@
---- build/linux/chrome.map.orig	2021-01-07 00:36:18 UTC
+--- build/linux/chrome.map.orig	2021-04-14 01:08:36 UTC
 +++ build/linux/chrome.map
 @@ -1,4 +1,7 @@
  {
@@ -19,10 +19,10 @@
    # Memory allocation symbols.  We want chrome and any libraries to
    # share the same heap, so it is correct to export these symbols.
    calloc;
-@@ -81,7 +88,4 @@ global:
-   localtime64;
-   localtime64_r;
+@@ -83,7 +90,4 @@ global:
    localtime_r;
+ 
+   v8dbg_*;
 -
 -local:
 -  *;
diff --git a/devel/electron11/files/patch-build_linux_libpci_BUILD.gn b/devel/electron12/files/patch-build_linux_libpci_BUILD.gn
similarity index 100%
rename from devel/electron11/files/patch-build_linux_libpci_BUILD.gn
rename to devel/electron12/files/patch-build_linux_libpci_BUILD.gn
diff --git a/devel/electron11/files/patch-build_linux_unbundle_libusb.gn b/devel/electron12/files/patch-build_linux_unbundle_libusb.gn
similarity index 100%
rename from devel/electron11/files/patch-build_linux_unbundle_libusb.gn
rename to devel/electron12/files/patch-build_linux_unbundle_libusb.gn
diff --git a/devel/electron11/files/patch-build_linux_unbundle_replace__gn__files.py b/devel/electron12/files/patch-build_linux_unbundle_replace__gn__files.py
similarity index 100%
rename from devel/electron11/files/patch-build_linux_unbundle_replace__gn__files.py
rename to devel/electron12/files/patch-build_linux_unbundle_replace__gn__files.py
diff --git a/devel/electron11/files/patch-build_toolchain_gcc__toolchain.gni b/devel/electron12/files/patch-build_toolchain_gcc__toolchain.gni
similarity index 85%
rename from devel/electron11/files/patch-build_toolchain_gcc__toolchain.gni
rename to devel/electron12/files/patch-build_toolchain_gcc__toolchain.gni
index fac0002c1f8e198dcc36fbd55e7e27f0d8fb6ac2..a5c29350cccebcfbe82b941512dbc55f1ad053b3 100644
--- a/devel/electron11/files/patch-build_toolchain_gcc__toolchain.gni
+++ b/devel/electron12/files/patch-build_toolchain_gcc__toolchain.gni
@@ -1,6 +1,6 @@
---- build/toolchain/gcc_toolchain.gni.orig	2021-01-07 00:36:18 UTC
+--- build/toolchain/gcc_toolchain.gni.orig	2021-04-14 01:08:36 UTC
 +++ build/toolchain/gcc_toolchain.gni
-@@ -50,6 +50,11 @@ if (enable_resource_allowlist_generation) {
+@@ -51,6 +51,11 @@ if (enable_resource_allowlist_generation) {
        "enable_resource_allowlist_generation=true does not work for target_os=$target_os")
  }
  
@@ -12,7 +12,7 @@
  # This template defines a toolchain for something that works like gcc
  # (including clang).
  #
-@@ -641,13 +646,23 @@ template("clang_toolchain") {
+@@ -639,13 +644,23 @@ template("clang_toolchain") {
    }
  
    gcc_toolchain(target_name) {
diff --git a/devel/electron11/files/patch-build_toolchain_get__concurrent__links.py b/devel/electron12/files/patch-build_toolchain_get__concurrent__links.py
similarity index 100%
rename from devel/electron11/files/patch-build_toolchain_get__concurrent__links.py
rename to devel/electron12/files/patch-build_toolchain_get__concurrent__links.py
diff --git a/devel/electron11/files/patch-build_toolchain_linux_BUILD.gn b/devel/electron12/files/patch-build_toolchain_linux_BUILD.gn
similarity index 62%
rename from devel/electron11/files/patch-build_toolchain_linux_BUILD.gn
rename to devel/electron12/files/patch-build_toolchain_linux_BUILD.gn
index 2c5955f875615ebad426049ae5436d4b22e13a08..92ab2d55811569e87287ca45ab49574edca2d4c6 100644
--- a/devel/electron11/files/patch-build_toolchain_linux_BUILD.gn
+++ b/devel/electron12/files/patch-build_toolchain_linux_BUILD.gn
@@ -1,6 +1,6 @@
---- build/toolchain/linux/BUILD.gn.orig	2021-01-07 00:36:18 UTC
+--- build/toolchain/linux/BUILD.gn.orig	2021-04-14 01:08:36 UTC
 +++ build/toolchain/linux/BUILD.gn
-@@ -22,7 +22,6 @@ clang_toolchain("clang_arm") {
+@@ -23,7 +23,6 @@ clang_toolchain("clang_arm") {
  }
  
  clang_toolchain("clang_arm64") {
diff --git a/devel/electron11/files/patch-cc_BUILD.gn b/devel/electron12/files/patch-cc_BUILD.gn
similarity index 68%
rename from devel/electron11/files/patch-cc_BUILD.gn
rename to devel/electron12/files/patch-cc_BUILD.gn
index 2f36d5ca063257841dc3f936b731dc4016556b21..2d22a88b522f54e8702ceca247980f030f7ae2f9 100644
--- a/devel/electron11/files/patch-cc_BUILD.gn
+++ b/devel/electron12/files/patch-cc_BUILD.gn
@@ -1,6 +1,6 @@
---- cc/BUILD.gn.orig	2021-01-07 00:36:18 UTC
+--- cc/BUILD.gn.orig	2021-04-14 01:08:36 UTC
 +++ cc/BUILD.gn
-@@ -615,7 +615,7 @@ cc_test_static_library("test_support") {
+@@ -633,7 +633,7 @@ cc_test_static_library("test_support") {
    if (enable_vulkan) {
      deps += [ "//gpu/vulkan/init" ]
    }
@@ -9,7 +9,7 @@
      data_deps = [ "//third_party/mesa_headers" ]
    }
  }
-@@ -824,7 +824,6 @@ cc_test("cc_unittests") {
+@@ -848,7 +848,6 @@ cc_test("cc_unittests") {
    ]
    data_deps = [
      "//testing/buildbot/filters:cc_unittests_filters",
diff --git a/devel/electron11/files/patch-cc_layers_scrollbar__layer__impl__base.cc b/devel/electron12/files/patch-cc_layers_scrollbar__layer__impl__base.cc
similarity index 100%
rename from devel/electron11/files/patch-cc_layers_scrollbar__layer__impl__base.cc
rename to devel/electron12/files/patch-cc_layers_scrollbar__layer__impl__base.cc
diff --git a/devel/electron11/files/patch-cc_test_layer__tree__test.cc b/devel/electron12/files/patch-cc_test_layer__tree__test.cc
similarity index 76%
rename from devel/electron11/files/patch-cc_test_layer__tree__test.cc
rename to devel/electron12/files/patch-cc_test_layer__tree__test.cc
index a0fe6be404d2d3bc379763ae494c11783d2eb250..b7a4f77a5394af356043a2bd1eb188921ab6a074 100644
--- a/devel/electron11/files/patch-cc_test_layer__tree__test.cc
+++ b/devel/electron12/files/patch-cc_test_layer__tree__test.cc
@@ -1,6 +1,6 @@
---- cc/test/layer_tree_test.cc.orig	2021-01-07 00:36:18 UTC
+--- cc/test/layer_tree_test.cc.orig	2021-04-14 01:08:36 UTC
 +++ cc/test/layer_tree_test.cc
-@@ -669,7 +669,7 @@ LayerTreeTest::LayerTreeTest(viz::RendererType rendere
+@@ -673,7 +673,7 @@ LayerTreeTest::LayerTreeTest(viz::RendererType rendere
      init_vulkan = true;
    } else if (renderer_type_ == viz::RendererType::kSkiaDawn) {
      scoped_feature_list_.InitAndEnableFeature(features::kSkiaDawn);
diff --git a/devel/electron11/files/patch-cc_test_pixel__test.cc b/devel/electron12/files/patch-cc_test_pixel__test.cc
similarity index 100%
rename from devel/electron11/files/patch-cc_test_pixel__test.cc
rename to devel/electron12/files/patch-cc_test_pixel__test.cc
diff --git a/devel/electron11/files/patch-cc_trees_frame__rate__estimator.cc b/devel/electron12/files/patch-cc_trees_frame__rate__estimator.cc
similarity index 100%
rename from devel/electron11/files/patch-cc_trees_frame__rate__estimator.cc
rename to devel/electron12/files/patch-cc_trees_frame__rate__estimator.cc
diff --git a/devel/electron11/files/patch-cc_trees_property__tree.cc b/devel/electron12/files/patch-cc_trees_property__tree.cc
similarity index 83%
rename from devel/electron11/files/patch-cc_trees_property__tree.cc
rename to devel/electron12/files/patch-cc_trees_property__tree.cc
index 85c114d845a4f6d03b3e702a5583fbd09f89a632..e6999df18a5d1223ca8d24a4e0d988535058c69b 100644
--- a/devel/electron11/files/patch-cc_trees_property__tree.cc
+++ b/devel/electron12/files/patch-cc_trees_property__tree.cc
@@ -1,6 +1,6 @@
---- cc/trees/property_tree.cc.orig	2021-01-07 00:36:18 UTC
+--- cc/trees/property_tree.cc.orig	2021-04-14 01:08:36 UTC
 +++ cc/trees/property_tree.cc
-@@ -1285,13 +1285,13 @@ gfx::ScrollOffset ScrollTree::MaxScrollOffset(int scro
+@@ -1300,13 +1300,13 @@ gfx::ScrollOffset ScrollTree::MaxScrollOffset(int scro
  
    gfx::Size clip_layer_bounds = container_bounds(scroll_node->id);
  
diff --git a/devel/electron11/files/patch-chrome_BUILD.gn b/devel/electron12/files/patch-chrome_BUILD.gn
similarity index 61%
rename from devel/electron11/files/patch-chrome_BUILD.gn
rename to devel/electron12/files/patch-chrome_BUILD.gn
index 644056ce2022230e2d566c9108e3a502966762e7..941178010d5efed14a5eac20efbeb422dd90147d 100644
--- a/devel/electron11/files/patch-chrome_BUILD.gn
+++ b/devel/electron12/files/patch-chrome_BUILD.gn
@@ -1,6 +1,6 @@
---- chrome/BUILD.gn.orig	2021-01-25 11:26:59 UTC
+--- chrome/BUILD.gn.orig	2021-04-22 07:51:50 UTC
 +++ chrome/BUILD.gn
-@@ -1214,6 +1214,10 @@ group("browser_dependencies") {
+@@ -1243,6 +1243,10 @@ group("browser_dependencies") {
      public_deps += [ "//chromeos/lacros" ]
    }
  
@@ -8,6 +8,6 @@
 +    public_deps -= [ "//components/crash/core/app" ]
 +  }
 +
-   if (is_chromeos) {
+   if (is_chromeos_ash) {
      public_deps += [
        "//chrome/browser/chromeos",
diff --git a/devel/electron11/files/patch-chrome_app_BUILD.gn b/devel/electron12/files/patch-chrome_app_BUILD.gn
similarity index 68%
rename from devel/electron11/files/patch-chrome_app_BUILD.gn
rename to devel/electron12/files/patch-chrome_app_BUILD.gn
index dc1bb01fd9ce786b249ab7fe0dcc390fbb8122a8..3fb040874572c21a43dc0eed7320c31bc8986df4 100644
--- a/devel/electron11/files/patch-chrome_app_BUILD.gn
+++ b/devel/electron12/files/patch-chrome_app_BUILD.gn
@@ -1,6 +1,6 @@
---- chrome/app/BUILD.gn.orig	2021-01-07 00:36:20 UTC
+--- chrome/app/BUILD.gn.orig	2021-04-14 01:08:37 UTC
 +++ chrome/app/BUILD.gn
-@@ -140,7 +140,7 @@ static_library("test_support") {
+@@ -143,7 +143,7 @@ static_library("test_support") {
      "//v8:v8_headers",
    ]
  
diff --git a/devel/electron12/files/patch-chrome_app_chrome__command__ids.h b/devel/electron12/files/patch-chrome_app_chrome__command__ids.h
new file mode 100644
index 0000000000000000000000000000000000000000..eac24f1128d9cc1af9ad5e9a30da9ff8b0719cc3
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_app_chrome__command__ids.h
@@ -0,0 +1,11 @@
+--- chrome/app/chrome_command_ids.h.orig	2021-04-14 01:08:37 UTC
++++ chrome/app/chrome_command_ids.h
+@@ -64,7 +64,7 @@
+ #define IDC_NAME_WINDOW                 34049
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #define IDC_USE_SYSTEM_TITLE_BAR        34051
+ #define IDC_RESTORE_WINDOW              34052
+ #endif
diff --git a/devel/electron12/files/patch-chrome_app_chrome__main.cc b/devel/electron12/files/patch-chrome_app_chrome__main.cc
new file mode 100644
index 0000000000000000000000000000000000000000..10f6484948b9e783f22313d1c0462df578ca2c2a
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_app_chrome__main.cc
@@ -0,0 +1,17 @@
+--- chrome/app/chrome_main.cc.orig	2021-04-14 01:08:37 UTC
++++ chrome/app/chrome_main.cc
+@@ -130,12 +130,12 @@ int ChromeMain(int argc, const char** argv) {
+   MainThreadStackSamplingProfiler scoped_sampling_profiler;
+ 
+   // Chrome-specific process modes.
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || \
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD) || \
+     defined(OS_WIN)
+   if (command_line->HasSwitch(switches::kHeadless)) {
+     return headless::HeadlessShellMain(params);
+   }
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) ||
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD) ||
+         // defined(OS_WIN)
+ 
+   int rv = content::ContentMain(params);
diff --git a/devel/electron11/files/patch-chrome_app_chrome__main__delegate.cc b/devel/electron12/files/patch-chrome_app_chrome__main__delegate.cc
similarity index 58%
rename from devel/electron11/files/patch-chrome_app_chrome__main__delegate.cc
rename to devel/electron12/files/patch-chrome_app_chrome__main__delegate.cc
index 281a929119fd867f871837c6ed6ef72ea795db4e..dcb28308e86ab2dcf1397bf00b94e6aadcf7697c 100644
--- a/devel/electron11/files/patch-chrome_app_chrome__main__delegate.cc
+++ b/devel/electron12/files/patch-chrome_app_chrome__main__delegate.cc
@@ -1,15 +1,6 @@
---- chrome/app/chrome_main_delegate.cc.orig	2021-01-07 00:36:20 UTC
+--- chrome/app/chrome_main_delegate.cc.orig	2021-04-14 01:08:37 UTC
 +++ chrome/app/chrome_main_delegate.cc
-@@ -108,7 +108,7 @@
- #include "chrome/app/shutdown_signal_handlers_posix.h"
- #endif
- 
--#if BUILDFLAG(ENABLE_NACL) && (defined(OS_LINUX) || defined(OS_CHROMEOS))
-+#if BUILDFLAG(ENABLE_NACL) && (defined(OS_LINUX) || defined(OS_CHROMEOS)) && !defined(OS_BSD)
- #include "components/nacl/common/nacl_paths.h"
- #include "components/nacl/zygote/nacl_fork_delegate_linux.h"
- #endif
-@@ -147,12 +147,12 @@
+@@ -149,12 +149,12 @@
  #include "v8/include/v8.h"
  #endif
  
@@ -24,50 +15,43 @@
  #include "chrome/browser/policy/policy_path_parser.h"
  #include "components/crash/core/app/crashpad.h"
  #endif
-@@ -258,7 +258,7 @@ void SetUpExtendedCrashReporting(bool is_browser_proce
+@@ -260,7 +260,7 @@ void SetUpExtendedCrashReporting(bool is_browser_proce
  
  #endif  // defined(OS_WIN)
  
 -#if defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && !defined(OS_BSD)
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS))
  void AdjustLinuxOOMScore(const std::string& process_type) {
    int score = -1;
  
-@@ -294,13 +294,13 @@ void AdjustLinuxOOMScore(const std::string& process_ty
+@@ -295,7 +295,7 @@ void AdjustLinuxOOMScore(const std::string& process_ty
    if (score > -1)
      base::AdjustOOMScore(base::GetCurrentProcId(), score);
  }
 -#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#endif  // (defined(OS_LINUX) || defined(OS_CHROMEOS)) && !defined(OS_BSD)
++#endif  // (defined(OS_LINUX) || defined(OS_CHROMEOS))
  
  // Returns true if this subprocess type needs the ResourceBundle initialized
  // and resources loaded.
- bool SubprocessNeedsResourceBundle(const std::string& process_type) {
-   return
--#if defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
-       // The zygote process opens the resources for the renderers.
-       process_type == switches::kZygoteProcess ||
- #endif
-@@ -339,7 +339,7 @@ bool HandleVersionSwitches(const base::CommandLine& co
-   return false;
- }
+@@ -341,7 +341,7 @@ bool HandleVersionSwitches(const base::CommandLine& co
  
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
  // Show the man page if --help or -h is on the command line.
  void HandleHelpSwitches(const base::CommandLine& command_line) {
    if (command_line.HasSwitch(switches::kHelp) ||
-@@ -349,7 +349,7 @@ void HandleHelpSwitches(const base::CommandLine& comma
+@@ -351,7 +351,7 @@ void HandleHelpSwitches(const base::CommandLine& comma
      PLOG(FATAL) << "execlp failed";
    }
  }
--#endif  // defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#endif  // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#endif  // defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
  
  #if !defined(OS_MAC) && !defined(OS_ANDROID)
  void SIGTERMProfilingShutdown(int signal) {
-@@ -403,7 +403,7 @@ void InitializeUserDataDir(base::CommandLine* command_
+@@ -405,7 +405,7 @@ void InitializeUserDataDir(base::CommandLine* command_
    std::string process_type =
        command_line->GetSwitchValueASCII(switches::kProcessType);
  
@@ -76,7 +60,7 @@
    // On Linux, Chrome does not support running multiple copies under different
    // DISPLAYs, so the profile directory can be specified in the environment to
    // support the virtual desktop use-case.
-@@ -415,7 +415,7 @@ void InitializeUserDataDir(base::CommandLine* command_
+@@ -417,7 +417,7 @@ void InitializeUserDataDir(base::CommandLine* command_
        user_data_dir = base::FilePath::FromUTF8Unsafe(user_data_dir_string);
      }
    }
@@ -85,43 +69,34 @@
  #if defined(OS_MAC)
    policy::path_parser::CheckUserDataDirPolicy(&user_data_dir);
  #endif  // OS_MAC
-@@ -487,7 +487,7 @@ void RecordMainStartupMetrics(base::TimeTicks applicat
+@@ -488,7 +488,7 @@ void RecordMainStartupMetrics(base::TimeTicks applicat
+   startup_metric_utils::RecordApplicationStartTime(now);
  #endif
  
- #if defined(OS_MAC) || defined(OS_WIN) || defined(OS_LINUX) || \
--    defined(OS_CHROMEOS)
-+    defined(OS_CHROMEOS) || defined(OS_BSD)
+-#if defined(OS_MAC) || defined(OS_WIN) || defined(OS_LINUX) || \
++#if defined(OS_MAC) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) || \
+     defined(OS_CHROMEOS)
    // Record the startup process creation time on supported platforms. On Android
    // this is recorded in ChromeMainDelegateAndroid.
-   startup_metric_utils::RecordStartupProcessCreationTime(
-@@ -705,7 +705,7 @@ bool ChromeMainDelegate::BasicStartupComplete(int* exi
+@@ -723,7 +723,7 @@ bool ChromeMainDelegate::BasicStartupComplete(int* exi
    v8_crashpad_support::SetUp();
  #endif
  
 -#if defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && !defined(OS_BSD)
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS))
    if (!crash_reporter::IsCrashpadEnabled()) {
      breakpad::SetFirstChanceExceptionHandler(v8::TryHandleWebAssemblyTrapPosix);
    }
-@@ -716,7 +716,7 @@ bool ChromeMainDelegate::BasicStartupComplete(int* exi
-     *exit_code = 0;
-     return true;  // Got a --version switch; exit with a success error code.
+@@ -736,7 +736,7 @@ bool ChromeMainDelegate::BasicStartupComplete(int* exi
    }
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
    // This will directly exit if the user asked for help.
    HandleHelpSwitches(command_line);
  #endif
-@@ -744,7 +744,7 @@ bool ChromeMainDelegate::BasicStartupComplete(int* exi
- #if defined(OS_CHROMEOS)
-   chromeos::RegisterPathProvider();
- #endif
--#if BUILDFLAG(ENABLE_NACL) && (defined(OS_LINUX) || defined(OS_CHROMEOS))
-+#if BUILDFLAG(ENABLE_NACL) && (defined(OS_LINUX) || defined(OS_CHROMEOS)) && !defined(OS_BSD)
-   nacl::RegisterPathProvider();
- #endif
- 
-@@ -924,7 +924,7 @@ void ChromeMainDelegate::PreSandboxStartup() {
+@@ -945,7 +945,7 @@ void ChromeMainDelegate::PreSandboxStartup() {
  
    crash_reporter::InitializeCrashKeys();
  
@@ -130,7 +105,7 @@
    ChromeCrashReporterClient::Create();
  #endif
  
-@@ -937,7 +937,7 @@ void ChromeMainDelegate::PreSandboxStartup() {
+@@ -958,7 +958,7 @@ void ChromeMainDelegate::PreSandboxStartup() {
    child_process_logging::Init();
  #endif
  #if defined(ARCH_CPU_ARM_FAMILY) && \
@@ -139,7 +114,7 @@
    // Create an instance of the CPU class to parse /proc/cpuinfo and cache
    // cpu_brand info.
    base::CPU cpu_info;
-@@ -1056,7 +1056,7 @@ void ChromeMainDelegate::PreSandboxStartup() {
+@@ -1075,7 +1075,7 @@ void ChromeMainDelegate::PreSandboxStartup() {
          locale;
    }
  
@@ -148,7 +123,7 @@
    // Zygote needs to call InitCrashReporter() in RunZygote().
    if (process_type != switches::kZygoteProcess) {
  #if defined(OS_ANDROID)
-@@ -1077,7 +1077,7 @@ void ChromeMainDelegate::PreSandboxStartup() {
+@@ -1096,7 +1096,7 @@ void ChromeMainDelegate::PreSandboxStartup() {
      }
  #endif  // defined(OS_ANDROID)
    }
@@ -157,16 +132,16 @@
  
  #if defined(OS_ANDROID)
    CHECK_EQ(base::android::GetLibraryProcessType(),
-@@ -1097,7 +1097,7 @@ void ChromeMainDelegate::PreSandboxStartup() {
+@@ -1116,7 +1116,7 @@ void ChromeMainDelegate::PreSandboxStartup() {
  void ChromeMainDelegate::SandboxInitialized(const std::string& process_type) {
    // Note: If you are adding a new process type below, be sure to adjust the
    // AdjustLinuxOOMScore function too.
 -#if defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && !defined(OS_BSD)
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS))
    AdjustLinuxOOMScore(process_type);
  #endif
  #if defined(OS_WIN)
-@@ -1139,7 +1139,7 @@ int ChromeMainDelegate::RunProcess(
+@@ -1158,7 +1158,7 @@ int ChromeMainDelegate::RunProcess(
  
      // This entry is not needed on Linux, where the NaCl loader
      // process is launched via nacl_helper instead.
@@ -175,21 +150,21 @@
      {switches::kNaClLoaderProcess, NaClMain},
  #else
      {"<invalid>", nullptr},  // To avoid constant array of size 0
-@@ -1167,7 +1167,7 @@ void ChromeMainDelegate::ProcessExiting(const std::str
+@@ -1186,7 +1186,7 @@ void ChromeMainDelegate::ProcessExiting(const std::str
  #endif  // !defined(OS_ANDROID)
  }
  
 -#if defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && !defined(OS_BSD)
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS))
  void ChromeMainDelegate::ZygoteStarting(
      std::vector<std::unique_ptr<content::ZygoteForkDelegate>>* delegates) {
- #if defined(OS_CHROMEOS)
-@@ -1204,7 +1204,7 @@ void ChromeMainDelegate::ZygoteForked() {
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
+@@ -1223,7 +1223,7 @@ void ChromeMainDelegate::ZygoteForked() {
    crash_keys::SetCrashKeysFromCommandLine(*command_line);
  }
  
 -#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#endif  // (defined(OS_LINUX) || defined(OS_CHROMEOS)) && !defined(OS_BSD)
++#endif  // (defined(OS_LINUX) || defined(OS_CHROMEOS))
  
  content::ContentClient* ChromeMainDelegate::CreateContentClient() {
    return &chrome_content_client_;
diff --git a/devel/electron11/files/patch-chrome_app_chromium__strings.grd b/devel/electron12/files/patch-chrome_app_chromium__strings.grd
similarity index 86%
rename from devel/electron11/files/patch-chrome_app_chromium__strings.grd
rename to devel/electron12/files/patch-chrome_app_chromium__strings.grd
index 69eaa12b649548f1c7fc14bcdddd61ae48788983..3a04420701656c81cde0c8e5dceb2937f99e203c 100644
--- a/devel/electron11/files/patch-chrome_app_chromium__strings.grd
+++ b/devel/electron12/files/patch-chrome_app_chromium__strings.grd
@@ -1,6 +1,6 @@
---- chrome/app/chromium_strings.grd.orig	2021-01-07 00:36:20 UTC
+--- chrome/app/chromium_strings.grd.orig	2021-04-14 01:08:37 UTC
 +++ chrome/app/chromium_strings.grd
-@@ -698,7 +698,7 @@ Chromium is unable to recover your settings.
+@@ -716,7 +716,7 @@ Chromium is unable to recover your settings.
        </if>
  
        <!-- about:browser-switch strings -->
@@ -9,7 +9,7 @@
          <message name="IDS_ABOUT_BROWSER_SWITCH_DESCRIPTION_UNKNOWN_BROWSER" desc="Description shown while waiting for an alternative browser to open, when the browser name is not auto-detected">
            Your system administrator has configured Chromium to open an alternative browser to access <ph name="TARGET_URL_HOSTNAME">$1<ex>example.com</ex></ph>.
          </message>
-@@ -809,7 +809,7 @@ Chromium is unable to recover your settings.
+@@ -839,7 +839,7 @@ Chromium is unable to recover your settings.
        </message>
  
        <!-- ProcessSingleton -->
@@ -18,7 +18,7 @@
          <message name="IDS_PROFILE_IN_USE_POSIX" desc="Message shown when the browser cannot start because the profile is in use on a different host.">
            The profile appears to be in use by another Chromium process (<ph name="PROCESS_ID">$1<ex>12345</ex></ph>) on another computer (<ph name="HOST_NAME">$2<ex>example.com</ex></ph>). Chromium has locked the profile so that it doesn't get corrupted. If you are sure no other processes are using this profile, you can unlock the profile and relaunch Chromium.
          </message>
-@@ -1028,7 +1028,7 @@ Chromium is unable to recover your settings.
+@@ -1058,7 +1058,7 @@ Chromium is unable to recover your settings.
        </message>
  
        <!-- Plugin Placeholders -->
diff --git a/devel/electron11/files/patch-chrome_app_generated__resources.grd b/devel/electron12/files/patch-chrome_app_generated__resources.grd
similarity index 63%
rename from devel/electron11/files/patch-chrome_app_generated__resources.grd
rename to devel/electron12/files/patch-chrome_app_generated__resources.grd
index 27f025d824238646de9a8f07a3da7840cc4b48d5..bd26fe56fa3799f28978ba2828aa0c45b5bcf89f 100644
--- a/devel/electron11/files/patch-chrome_app_generated__resources.grd
+++ b/devel/electron12/files/patch-chrome_app_generated__resources.grd
@@ -1,6 +1,6 @@
---- chrome/app/generated_resources.grd.orig	2021-01-07 00:36:20 UTC
+--- chrome/app/generated_resources.grd.orig	2021-04-14 01:08:37 UTC
 +++ chrome/app/generated_resources.grd
-@@ -5248,7 +5248,7 @@ Keep your key file in a safe place. You will need it t
+@@ -5255,7 +5255,7 @@ Keep your key file in a safe place. You will need it t
        </if>
  
        <!-- chrome://browser-switch strings -->
@@ -9,21 +9,21 @@
          <message name="IDS_ABOUT_BROWSER_SWITCH_TITLE" desc="about:browser-switch page title">
            Legacy Browser Support
          </message>
-@@ -7239,7 +7239,7 @@ the Bookmarks menu.">
+@@ -7305,7 +7305,7 @@ Keep your key file in a safe place. You will need it t
          Google Pay
        </message>
  
--      <if expr="is_linux and not chromeos">
-+      <if expr="is_posix and not chromeos">
+-      <if expr="is_linux and not chromeos and not lacros">
++      <if expr="is_posix and not chromeos and not lacros">
          <message name="IDS_SHOW_WINDOW_DECORATIONS" desc="The label of a radio button in the options dialog for using the system title bar and borders.">
            Use system title bar and borders
          </message>
-@@ -8210,7 +8210,7 @@ Please help our engineers fix this problem. Tell us wh
+@@ -8296,7 +8296,7 @@ Please help our engineers fix this problem. Tell us wh
          Set as default
        </message>
  
--      <if expr="is_linux and not chromeos">
-+      <if expr="is_posix and not chromeos">
+-      <if expr="is_linux and not chromeos and not lacros">
++      <if expr="is_posix and not chromeos and not lacros">
          <message name="IDS_MINIMIZE_WINDOW_MENU" desc="The Linux browser window menu item text for minimizing the window.">
            Minimize
          </message>
diff --git a/devel/electron11/files/patch-chrome_app_google__chrome__strings.grd b/devel/electron12/files/patch-chrome_app_google__chrome__strings.grd
similarity index 86%
rename from devel/electron11/files/patch-chrome_app_google__chrome__strings.grd
rename to devel/electron12/files/patch-chrome_app_google__chrome__strings.grd
index a246275ec7ec39f9deec8830d9143b73206a494e..9e579bddd89ef99535bd4a8cfec6800d1a8fb1eb 100644
--- a/devel/electron11/files/patch-chrome_app_google__chrome__strings.grd
+++ b/devel/electron12/files/patch-chrome_app_google__chrome__strings.grd
@@ -1,6 +1,6 @@
---- chrome/app/google_chrome_strings.grd.orig	2021-01-07 00:36:20 UTC
+--- chrome/app/google_chrome_strings.grd.orig	2021-04-14 01:08:37 UTC
 +++ chrome/app/google_chrome_strings.grd
-@@ -705,7 +705,7 @@ Google Chrome is unable to recover your settings.
+@@ -723,7 +723,7 @@ Google Chrome is unable to recover your settings.
        </if>
  
        <!-- about:browser-switch strings -->
@@ -9,7 +9,7 @@
          <message name="IDS_ABOUT_BROWSER_SWITCH_DESCRIPTION_UNKNOWN_BROWSER" desc="Description shown while waiting for an alternative browser to open, when the browser name is not auto-detected">
            Your system administrator has configured Google Chrome to open an alternative browser to access <ph name="TARGET_URL_HOSTNAME">$1<ex>example.com</ex></ph>.
          </message>
-@@ -816,7 +816,7 @@ Google Chrome is unable to recover your settings.
+@@ -846,7 +846,7 @@ Google Chrome is unable to recover your settings.
        </message>
  
        <!-- ProcessSingleton -->
@@ -18,7 +18,7 @@
          <message name="IDS_PROFILE_IN_USE_POSIX" desc="Message shown when the browser cannot start because the profile is in use on a different host.">
            The profile appears to be in use by another Google Chrome process (<ph name="PROCESS_ID">$1<ex>12345</ex></ph>) on another computer (<ph name="HOST_NAME">$2<ex>example.com</ex></ph>).  Chrome has locked the profile so that it doesn't get corrupted.  If you are sure no other processes are using this profile, you can unlock the profile and relaunch Chrome.
          </message>
-@@ -1042,7 +1042,7 @@ Google Chrome is unable to recover your settings.
+@@ -1072,7 +1072,7 @@ Google Chrome is unable to recover your settings.
        </message>
  
        <!-- Plugin Placeholders -->
diff --git a/devel/electron12/files/patch-chrome_app_profiles__strings.grdp b/devel/electron12/files/patch-chrome_app_profiles__strings.grdp
new file mode 100644
index 0000000000000000000000000000000000000000..6ba5c58efe6a0bc559832efb7634a756fe351aa5
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_app_profiles__strings.grdp
@@ -0,0 +1,11 @@
+--- chrome/app/profiles_strings.grdp.orig	2021-04-14 01:08:37 UTC
++++ chrome/app/profiles_strings.grdp
+@@ -87,7 +87,7 @@
+       Add Profile...
+     </message>
+   </if>
+-  <if expr="is_linux">
++  <if expr="is_posix">
+     <message name="IDS_PROFILES_ADD_PROFILE_LABEL" desc="Menu item for adding a new profile.">
+       Add profile...
+     </message>
diff --git a/devel/electron11/files/patch-chrome_app_settings__strings.grdp b/devel/electron12/files/patch-chrome_app_settings__strings.grdp
similarity index 59%
rename from devel/electron11/files/patch-chrome_app_settings__strings.grdp
rename to devel/electron12/files/patch-chrome_app_settings__strings.grdp
index 8074d9b5a9eca01982d5be995d5e93078a323761..f644b5c6812b525d8bd9b1909fa53f9b5afdd1a8 100644
--- a/devel/electron11/files/patch-chrome_app_settings__strings.grdp
+++ b/devel/electron12/files/patch-chrome_app_settings__strings.grdp
@@ -1,20 +1,20 @@
---- chrome/app/settings_strings.grdp.orig	2021-01-07 00:36:21 UTC
+--- chrome/app/settings_strings.grdp.orig	2021-04-14 01:08:38 UTC
 +++ chrome/app/settings_strings.grdp
-@@ -110,7 +110,7 @@
+@@ -117,7 +117,7 @@
        Theme
      </message>
    </if>
--  <if expr="is_linux and not chromeos">
-+  <if expr="is_posix and not chromeos">
+-  <if expr="is_linux and not chromeos and not lacros">
++  <if expr="is_posix and not chromeos and not lacros">
      <message name="IDS_SETTINGS_SYSTEM_THEME" desc="Text of the label describing the system (GTK+) browser theme on Linux">
        GTK+
      </message>
-@@ -124,7 +124,7 @@
+@@ -131,7 +131,7 @@
        Use Classic
      </message>
    </if>
--  <if expr="not is_linux or chromeos">
-+  <if expr="not is_posix or chromeos">
+-  <if expr="not is_linux or chromeos or lacros">
++  <if expr="not is_posix or chromeos or lacros">
      <message name="IDS_SETTINGS_RESET_TO_DEFAULT_THEME" desc="Name of the control which resets the browser theme back to the default theme.">
        Reset to default
      </message>
diff --git a/devel/electron11/files/patch-chrome_app_shutdown__signal__handlers__posix.cc b/devel/electron12/files/patch-chrome_app_shutdown__signal__handlers__posix.cc
similarity index 100%
rename from devel/electron11/files/patch-chrome_app_shutdown__signal__handlers__posix.cc
rename to devel/electron12/files/patch-chrome_app_shutdown__signal__handlers__posix.cc
diff --git a/devel/electron11/files/patch-chrome_app_theme_chrome__unscaled__resources.grd b/devel/electron12/files/patch-chrome_app_theme_chrome__unscaled__resources.grd
similarity index 100%
rename from devel/electron11/files/patch-chrome_app_theme_chrome__unscaled__resources.grd
rename to devel/electron12/files/patch-chrome_app_theme_chrome__unscaled__resources.grd
diff --git a/devel/electron11/files/patch-chrome_app_theme_theme__resources.grd b/devel/electron12/files/patch-chrome_app_theme_theme__resources.grd
similarity index 100%
rename from devel/electron11/files/patch-chrome_app_theme_theme__resources.grd
rename to devel/electron12/files/patch-chrome_app_theme_theme__resources.grd
diff --git a/devel/electron11/files/patch-chrome_browser_BUILD.gn b/devel/electron12/files/patch-chrome_browser_BUILD.gn
similarity index 70%
rename from devel/electron11/files/patch-chrome_browser_BUILD.gn
rename to devel/electron12/files/patch-chrome_browser_BUILD.gn
index 86b56d9ca9a6a52bd3b12a0370e6f4caed3a9e09..ef88a3574cbce38eaa8cc4d701da976e9c7242a6 100644
--- a/devel/electron11/files/patch-chrome_browser_BUILD.gn
+++ b/devel/electron12/files/patch-chrome_browser_BUILD.gn
@@ -1,6 +1,6 @@
---- chrome/browser/BUILD.gn.orig	2021-01-25 11:27:00 UTC
+--- chrome/browser/BUILD.gn.orig	2021-04-22 07:51:50 UTC
 +++ chrome/browser/BUILD.gn
-@@ -4999,7 +4999,7 @@ static_library("browser") {
+@@ -5277,7 +5277,7 @@ static_library("browser") {
      ]
    }
  
diff --git a/devel/electron11/files/patch-chrome_browser_about__flags.cc b/devel/electron12/files/patch-chrome_browser_about__flags.cc
similarity index 60%
rename from devel/electron11/files/patch-chrome_browser_about__flags.cc
rename to devel/electron12/files/patch-chrome_browser_about__flags.cc
index 2dc8a359c726a3866505dcf69aa0c9af6d1666de..31a156b49b205b2cc54aed086ae0ce214fe87bfa 100644
--- a/devel/electron11/files/patch-chrome_browser_about__flags.cc
+++ b/devel/electron12/files/patch-chrome_browser_about__flags.cc
@@ -1,6 +1,15 @@
---- chrome/browser/about_flags.cc.orig	2021-01-07 00:36:21 UTC
+--- chrome/browser/about_flags.cc.orig	2021-04-14 01:08:38 UTC
 +++ chrome/browser/about_flags.cc
-@@ -881,7 +881,7 @@ const FeatureEntry::Choice kMemlogSamplingRateChoices[
+@@ -191,7 +191,7 @@
+ #include "ui/gl/gl_switches.h"
+ #include "ui/native_theme/native_theme_features.h"
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "base/allocator/buildflags.h"
+ #endif
+ 
+@@ -918,7 +918,7 @@ const FeatureEntry::Choice kMemlogSamplingRateChoices[
       heap_profiling::kMemlogSamplingRate5MB},
  };
  
@@ -9,7 +18,7 @@
      defined(OS_WIN)
  const FeatureEntry::FeatureParam kOmniboxDocumentProviderServerScoring[] = {
      {"DocumentUseServerScore", "true"},
-@@ -1231,7 +1231,7 @@ const FeatureEntry::FeatureVariation kOmniboxBookmarkP
+@@ -1268,7 +1268,7 @@ const FeatureEntry::FeatureVariation kOmniboxBookmarkP
      },
  };
  
@@ -17,60 +26,44 @@
 +#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD) ||
          // defined(OS_WIN)
  
- const FeatureEntry::FeatureParam kOmniboxOnFocusSuggestionsParamSERP[] = {
-@@ -2879,7 +2879,7 @@ const FeatureEntry kFeatureEntries[] = {
+ const FeatureEntry::FeatureVariation
+@@ -3009,7 +3009,7 @@ const FeatureEntry kFeatureEntries[] = {
       FEATURE_VALUE_TYPE(ash::features::kSystemTrayMicGainSetting)},
- #endif  // OS_CHROMEOS
+ #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
  
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID)) || defined(OS_BSD)
+-#if (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) && !defined(OS_ANDROID)
++#if (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)) && !defined(OS_ANDROID)
      {
          "enable-accelerated-video-decode",
          flag_descriptions::kAcceleratedVideoDecodeName,
-@@ -2895,7 +2895,7 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -3025,7 +3025,7 @@ const FeatureEntry kFeatureEntries[] = {
          kOsMac | kOsWin | kOsCrOS | kOsAndroid,
          SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedVideoDecode),
      },
--#endif  // defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID)
-+#endif  // (defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID)) || defined(OS_BSD)
+-#endif  // (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) &&
++#endif  // (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)) &&
+         // !defined(OS_ANDROID)
      {
          "disable-accelerated-video-encode",
-         flag_descriptions::kAcceleratedVideoEncodeName,
-@@ -3001,13 +3001,13 @@ const FeatureEntry kFeatureEntries[] = {
-      flag_descriptions::kForceEnableDevicesPageName,
-      flag_descriptions::kForceEnableDevicesPageDescription, kOsDesktop,
-      FEATURE_VALUE_TYPE(features::kForceEnableDevicesPage)},
--#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
-     {"enable-webgl2-compute-context",
-      flag_descriptions::kWebGL2ComputeContextName,
-      flag_descriptions::kWebGL2ComputeContextDescription,
-      kOsWin | kOsLinux | kOsCrOS,
-      SINGLE_VALUE_TYPE(switches::kEnableWebGL2ComputeContext)},
--#endif  // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#endif  // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
-     {"enable-webgl-draft-extensions",
-      flag_descriptions::kWebglDraftExtensionsName,
-      flag_descriptions::kWebglDraftExtensionsDescription, kOsAll,
-@@ -3204,7 +3204,7 @@ const FeatureEntry kFeatureEntries[] = {
-      flag_descriptions::kEnableOfflinePreviewsDescription, kOsAndroid,
-      FEATURE_VALUE_TYPE(previews::features::kOfflinePreviews)},
- #endif  // OS_ANDROID
+@@ -3367,7 +3367,7 @@ const FeatureEntry kFeatureEntries[] = {
+     {"enable-login-detection", flag_descriptions::kEnableLoginDetectionName,
+      flag_descriptions::kEnableLoginDetectionDescription, kOsAll,
+      FEATURE_VALUE_TYPE(login_detection::kLoginDetection)},
 -#if defined(OS_CHROMEOS) || defined(OS_LINUX)
 +#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD)
      {"enable-save-data", flag_descriptions::kEnableSaveDataName,
       flag_descriptions::kEnableSaveDataDescription, kOsCrOS | kOsLinux,
       SINGLE_VALUE_TYPE(
-@@ -3214,7 +3214,7 @@ const FeatureEntry kFeatureEntries[] = {
-      flag_descriptions::kEnableNavigationPredictorDescription,
-      kOsCrOS | kOsLinux,
-      FEATURE_VALUE_TYPE(blink::features::kNavigationPredictor)},
--#endif  // OS_CHROMEOS || OS_LINUX
-+#endif  // OS_CHROMEOS || OS_LINUX || OS_BSD
+@@ -3381,7 +3381,7 @@ const FeatureEntry kFeatureEntries[] = {
+      flag_descriptions::kEnableNavigationPredictorRendererWarmupName,
+      flag_descriptions::kEnableNavigationPredictorRendererWarmupDescription,
+      kOsAll, FEATURE_VALUE_TYPE(features::kNavigationPredictorRendererWarmup)},
+-#endif  // BUILDFLAG(IS_CHROMEOS_ASH) || OS_LINUX
++#endif  // BUILDFLAG(IS_CHROMEOS_ASH) || OS_LINUX || defined(OS_BSD)
      {"enable-preconnect-to-search",
       flag_descriptions::kEnablePreconnectToSearchName,
       flag_descriptions::kEnablePreconnectToSearchDescription, kOsAll,
-@@ -4012,7 +4012,7 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -4173,7 +4173,7 @@ const FeatureEntry kFeatureEntries[] = {
       kOsAll,
       FEATURE_VALUE_TYPE(omnibox::kOmniboxTrendingZeroPrefixSuggestionsOnNTP)},
  
@@ -79,16 +72,16 @@
      defined(OS_WIN)
      {"omnibox-experimental-keyword-mode",
       flag_descriptions::kOmniboxExperimentalKeywordModeName,
-@@ -4089,7 +4089,7 @@ const FeatureEntry kFeatureEntries[] = {
-      FEATURE_WITH_PARAMS_VALUE_TYPE(omnibox::kBookmarkPaths,
-                                     kOmniboxBookmarkPathsVariations,
-                                     "OmniboxBundledExperimentV1")},
+@@ -4254,7 +4254,7 @@ const FeatureEntry kFeatureEntries[] = {
+      flag_descriptions::kOmniboxDisableCGIParamMatchingName,
+      flag_descriptions::kOmniboxDisableCGIParamMatchingDescription, kOsDesktop,
+      FEATURE_VALUE_TYPE(omnibox::kDisableCGIParamMatching)},
 -#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) ||
 +#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD) ||
          // defined(OS_WIN)
  
      {"enable-speculative-service-worker-start-on-query-input",
-@@ -4398,14 +4398,14 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -4563,14 +4563,14 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kClickToOpenPDFDescription, kOsAll,
       FEATURE_VALUE_TYPE(features::kClickToOpenPDFPlaceholder)},
  
@@ -105,7 +98,7 @@
          // defined(OS_CHROMEOS)
  
  #if !defined(OS_ANDROID)
-@@ -5108,7 +5108,7 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -5258,7 +5258,7 @@ const FeatureEntry kFeatureEntries[] = {
       FEATURE_VALUE_TYPE(kClickToCallUI)},
  #endif  // BUILDFLAG(ENABLE_CLICK_TO_CALL)
  
@@ -114,7 +107,7 @@
      defined(OS_CHROMEOS)
      {"remote-copy-receiver", flag_descriptions::kRemoteCopyReceiverName,
       flag_descriptions::kRemoteCopyReceiverDescription, kOsDesktop,
-@@ -5125,7 +5125,7 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -5275,7 +5275,7 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kRemoteCopyProgressNotificationName,
       flag_descriptions::kRemoteCopyProgressNotificationDescription, kOsDesktop,
       FEATURE_VALUE_TYPE(kRemoteCopyProgressNotification)},
@@ -123,16 +116,16 @@
          // defined(OS_CHROMEOS)
  
      {"restrict-gamepad-access", flag_descriptions::kRestrictGamepadAccessName,
-@@ -5712,7 +5712,7 @@ const FeatureEntry kFeatureEntries[] = {
-      FEATURE_VALUE_TYPE(autofill::features::kAutofillTouchToFill)},
- #endif  // defined(OS_ANDROID)
+@@ -5852,7 +5852,7 @@ const FeatureEntry kFeatureEntries[] = {
+      flag_descriptions::kMouseSubframeNoImplicitCaptureDescription, kOsAll,
+      FEATURE_VALUE_TYPE(features::kMouseSubframeNoImplicitCapture)},
  
 -#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
 +#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD) || \
      defined(OS_CHROMEOS)
      {"global-media-controls", flag_descriptions::kGlobalMediaControlsName,
       flag_descriptions::kGlobalMediaControlsDescription,
-@@ -5753,7 +5753,7 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -5893,7 +5893,7 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kGlobalMediaControlsOverlayControlsDescription,
       kOsWin | kOsMac | kOsLinux,
       FEATURE_VALUE_TYPE(media::kGlobalMediaControlsOverlayControls)},
@@ -141,16 +134,16 @@
          // defined(OS_CHROMEOS)
  
  #if BUILDFLAG(ENABLE_SPELLCHECK) && defined(OS_WIN)
-@@ -5939,7 +5939,7 @@ const FeatureEntry kFeatureEntries[] = {
-      FEATURE_VALUE_TYPE(
-          password_manager::features::kEnablePasswordsAccountStorage)},
+@@ -6072,7 +6072,7 @@ const FeatureEntry kFeatureEntries[] = {
+          kPasswordsAccountStorageVariations,
+          "ButterForPasswords")},
  
 -#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
 +#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD) || \
      defined(OS_CHROMEOS)
      {"passwords-account-storage-iph",
       flag_descriptions::kEnablePasswordsAccountStorageIPHName,
-@@ -5947,7 +5947,7 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -6080,7 +6080,7 @@ const FeatureEntry kFeatureEntries[] = {
       kOsWin | kOsMac | kOsLinux,
       FEATURE_VALUE_TYPE(
           feature_engagement::kIPHPasswordsAccountStorageFeature)},
@@ -159,7 +152,7 @@
          // defined(OS_CHROMEOS)
  
      {"autofill-always-return-cloud-tokenized-card",
-@@ -6680,7 +6680,7 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -6794,7 +6794,7 @@ const FeatureEntry kFeatureEntries[] = {
       FEATURE_VALUE_TYPE(ash::features::kEnhancedDeskAnimations)},
  #endif
  
@@ -168,19 +161,20 @@
      defined(OS_CHROMEOS)
      {"enable-oop-print-drivers", flag_descriptions::kEnableOopPrintDriversName,
       flag_descriptions::kEnableOopPrintDriversDescription, kOsDesktop,
-@@ -6714,13 +6714,13 @@ const FeatureEntry kFeatureEntries[] = {
-      FEATURE_VALUE_TYPE(features::kMuteNotificationsDuringScreenShare)},
- #endif  // !defined(OS_ANDROID)
+@@ -6833,14 +6833,14 @@ const FeatureEntry kFeatureEntries[] = {
  
--#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MAC)
-+#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MAC) || defined(OS_BSD)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_WIN) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || \
++#if defined(OS_WIN) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD) || \
+     defined(OS_MAC)
      {"enable-ephemeral-guest-profiles-on-desktop",
       flag_descriptions::kEnableEphemeralGuestProfilesOnDesktopName,
       flag_descriptions::kEnableEphemeralGuestProfilesOnDesktopDescription,
       kOsWin | kOsLinux | kOsMac,
       FEATURE_VALUE_TYPE(features::kEnableEphemeralGuestProfilesOnDesktop)},
--#endif  // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MAC)
-+#endif  // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MAC) || defined(OS_BSD)
+-#endif  // defined(OS_WIN) || (defined(OS_LINUX) ||
++#endif  // defined(OS_WIN) || (defined(OS_LINUX) || defined(OS_BSD) ||
+         // BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_MAC)
  
  #if defined(OS_ANDROID)
-     {"decouple-sync-from-android-auto-sync",
diff --git a/devel/electron11/files/patch-chrome_browser_after__startup__task__utils.cc b/devel/electron12/files/patch-chrome_browser_after__startup__task__utils.cc
similarity index 60%
rename from devel/electron11/files/patch-chrome_browser_after__startup__task__utils.cc
rename to devel/electron12/files/patch-chrome_browser_after__startup__task__utils.cc
index 2b71959bf864a835403d4f895c16ae19233f58dc..dda4d5d6df1212411af6dc8139c4a5c1d28e652c 100644
--- a/devel/electron11/files/patch-chrome_browser_after__startup__task__utils.cc
+++ b/devel/electron12/files/patch-chrome_browser_after__startup__task__utils.cc
@@ -1,15 +1,15 @@
---- chrome/browser/after_startup_task_utils.cc.orig	2021-01-07 00:36:21 UTC
+--- chrome/browser/after_startup_task_utils.cc.orig	2021-04-14 01:08:38 UTC
 +++ chrome/browser/after_startup_task_utils.cc
-@@ -32,7 +32,7 @@
- #include "chrome/browser/ui/tabs/tab_strip_model.h"
- #endif
+@@ -35,7 +35,7 @@
  
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
  #include "ui/views/linux_ui/linux_ui.h"
  #endif
  
-@@ -119,7 +119,7 @@ void QueueTask(std::unique_ptr<AfterStartupTask> queue
+@@ -122,7 +122,7 @@ void QueueTask(std::unique_ptr<AfterStartupTask> queue
  
  void SetBrowserStartupIsComplete() {
    DCHECK_CURRENTLY_ON(BrowserThread::UI);
@@ -18,7 +18,7 @@
      defined(OS_CHROMEOS)
    // Process::Current().CreationTime() is not available on all platforms.
    const base::Time process_creation_time =
-@@ -128,7 +128,7 @@ void SetBrowserStartupIsComplete() {
+@@ -131,7 +131,7 @@ void SetBrowserStartupIsComplete() {
      UMA_HISTOGRAM_LONG_TIMES("Startup.AfterStartupTaskDelayedUntilTime",
                               base::Time::Now() - process_creation_time);
    }
@@ -27,12 +27,12 @@
          // defined(OS_CHROMEOS)
    UMA_HISTOGRAM_COUNTS_10000("Startup.AfterStartupTaskCount",
                               g_after_startup_tasks.Get().size());
-@@ -138,7 +138,7 @@ void SetBrowserStartupIsComplete() {
-   g_after_startup_tasks.Get().clear();
-   g_after_startup_tasks.Get().shrink_to_fit();
+@@ -143,7 +143,7 @@ void SetBrowserStartupIsComplete() {
  
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
    // Make sure we complete the startup notification sequence, or launchers will
    // get confused by not receiving the expected message from the main process.
    views::LinuxUI* linux_ui = views::LinuxUI::instance();
diff --git a/devel/electron12/files/patch-chrome_browser_apps_platform__apps_api_media__galleries_media__galleries__apitest.cc b/devel/electron12/files/patch-chrome_browser_apps_platform__apps_api_media__galleries_media__galleries__apitest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..3995defaec27e3664710172b2ce28448493af783
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_apps_platform__apps_api_media__galleries_media__galleries__apitest.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/apps/platform_apps/api/media_galleries/media_galleries_apitest.cc.orig	2021-04-14 01:08:38 UTC
++++ chrome/browser/apps/platform_apps/api/media_galleries/media_galleries_apitest.cc
+@@ -294,7 +294,7 @@ IN_PROC_BROWSER_TEST_F(MediaGalleriesPlatformAppPpapiT
+ 
+ // Test is flaky, it fails on certain bots, namely WinXP Tests(1) and Linux
+ // (dbg)(1)(32).  See crbug.com/354425.
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #define MAYBE_MediaGalleriesNoAccess DISABLED_MediaGalleriesNoAccess
+ #else
+ #define MAYBE_MediaGalleriesNoAccess MediaGalleriesNoAccess
+@@ -332,7 +332,7 @@ IN_PROC_BROWSER_TEST_F(MediaGalleriesPlatformAppBrowse
+ 
+ // Test is flaky, it fails on certain bots, namely WinXP Tests(1) and Linux
+ // (dbg)(1)(32).  See crbug.com/354425.
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #define MAYBE_MediaGalleriesCopyTo DISABLED_MediaGalleriesCopyTo
+ #else
+ #define MAYBE_MediaGalleriesCopyTo MediaGalleriesCopyTo
diff --git a/devel/electron12/files/patch-chrome_browser_apps_platform__apps_api_media__galleries_media__galleries__watch__apitest.cc b/devel/electron12/files/patch-chrome_browser_apps_platform__apps_api_media__galleries_media__galleries__watch__apitest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..aea9c18164a580435bf675599e8af5cc9ab4239e
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_apps_platform__apps_api_media__galleries_media__galleries__watch__apitest.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/apps/platform_apps/api/media_galleries/media_galleries_watch_apitest.cc.orig	2021-04-14 01:08:38 UTC
++++ chrome/browser/apps/platform_apps/api/media_galleries/media_galleries_watch_apitest.cc
+@@ -224,7 +224,7 @@ IN_PROC_BROWSER_TEST_F(MediaGalleriesGalleryWatchApiTe
+ // Test is flaky on windows and linux: crbug.com/1150017.
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if defined(OS_WIN) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if defined(OS_WIN) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+ #define MAYBE_RemoveListenerAndModifyGallery \
+   DISABLED_RemoveListenerAndModifyGallery
+ #else
diff --git a/devel/electron11/files/patch-chrome_browser_apps_platform__apps_api_music__manager__private_device__id__linux.cc b/devel/electron12/files/patch-chrome_browser_apps_platform__apps_api_music__manager__private_device__id__linux.cc
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_apps_platform__apps_api_music__manager__private_device__id__linux.cc
rename to devel/electron12/files/patch-chrome_browser_apps_platform__apps_api_music__manager__private_device__id__linux.cc
diff --git a/devel/electron11/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc b/devel/electron12/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc
similarity index 83%
rename from devel/electron11/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc
rename to devel/electron12/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc
index 9f0ecc09828399ef5fceeee43245ee23bc8e4449..630cda2cff0a7aa5aaa872fae1112fdeceba805c 100644
--- a/devel/electron11/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc
+++ b/devel/electron12/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc
@@ -1,6 +1,6 @@
---- chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc.orig	2021-01-07 00:36:21 UTC
+--- chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc.orig	2021-04-14 01:08:38 UTC
 +++ chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc
-@@ -86,7 +86,7 @@ ChromeAutocompleteSchemeClassifier::GetInputTypeForSch
+@@ -87,7 +87,7 @@ ChromeAutocompleteSchemeClassifier::GetInputTypeForSch
        return metrics::OmniboxInputType::QUERY;
  
      case ExternalProtocolHandler::UNKNOWN: {
@@ -9,7 +9,7 @@
        // Linux impl of GetApplicationNameForProtocol doesn't distinguish
        // between URL schemes with handers and those without. This will
        // make the default behaviour be search on Linux.
-@@ -99,7 +99,7 @@ ChromeAutocompleteSchemeClassifier::GetInputTypeForSch
+@@ -100,7 +100,7 @@ ChromeAutocompleteSchemeClassifier::GetInputTypeForSch
            shell_integration::GetApplicationNameForProtocol(url);
        return application_name.empty() ? metrics::OmniboxInputType::EMPTY
                                        : metrics::OmniboxInputType::URL;
diff --git a/devel/electron11/files/patch-chrome_browser_background_background__mode__manager.cc b/devel/electron12/files/patch-chrome_browser_background_background__mode__manager.cc
similarity index 84%
rename from devel/electron11/files/patch-chrome_browser_background_background__mode__manager.cc
rename to devel/electron12/files/patch-chrome_browser_background_background__mode__manager.cc
index 98f3355b06c67ad774f5ed76302c597359f28e25..ffc4bc306640ad506bf302726faf03e636cbe83d 100644
--- a/devel/electron11/files/patch-chrome_browser_background_background__mode__manager.cc
+++ b/devel/electron12/files/patch-chrome_browser_background_background__mode__manager.cc
@@ -1,6 +1,6 @@
---- chrome/browser/background/background_mode_manager.cc.orig	2021-01-07 00:36:21 UTC
+--- chrome/browser/background/background_mode_manager.cc.orig	2021-04-14 01:08:38 UTC
 +++ chrome/browser/background/background_mode_manager.cc
-@@ -849,7 +849,7 @@ gfx::ImageSkia GetStatusTrayIcon() {
+@@ -873,7 +873,7 @@ gfx::ImageSkia GetStatusTrayIcon() {
      return gfx::ImageSkia();
  
    return family->CreateExact(size).AsImageSkia();
diff --git a/devel/electron11/files/patch-chrome_browser_background_background__mode__optimizer.cc b/devel/electron12/files/patch-chrome_browser_background_background__mode__optimizer.cc
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_background_background__mode__optimizer.cc
rename to devel/electron12/files/patch-chrome_browser_background_background__mode__optimizer.cc
diff --git a/devel/electron11/files/patch-chrome_browser_browser__resources.grd b/devel/electron12/files/patch-chrome_browser_browser__resources.grd
similarity index 72%
rename from devel/electron11/files/patch-chrome_browser_browser__resources.grd
rename to devel/electron12/files/patch-chrome_browser_browser__resources.grd
index 936e613211d27b66e02d798cba2d3893f113fe91..071e85501a41fe0582ba3edf9fbe7c3817821308 100644
--- a/devel/electron11/files/patch-chrome_browser_browser__resources.grd
+++ b/devel/electron12/files/patch-chrome_browser_browser__resources.grd
@@ -1,7 +1,7 @@
---- chrome/browser/browser_resources.grd.orig	2021-01-07 00:36:21 UTC
+--- chrome/browser/browser_resources.grd.orig	2021-04-14 01:08:38 UTC
 +++ chrome/browser/browser_resources.grd
-@@ -67,7 +67,7 @@
-         <include name="IDR_DISCARDS_SITE_DATA_MOJOM_LITE_JS" file="${root_gen_dir}\chrome\browser\ui\webui\discards\site_data.mojom-lite.js" use_base_dir="false" type="BINDATA" />
+@@ -89,7 +89,7 @@
+         <include name="IDR_DISCARDS_SITE_DATA_MOJOM_WEBUI_JS" file="${root_gen_dir}\mojom-webui\chrome\browser\ui\webui\discards\site_data.mojom-webui.js" use_base_dir="false" type="BINDATA" />
          <include name="IDR_DISCARDS_SORTED_TABLE_BEHAVIOR_JS" file="resources\discards\sorted_table_behavior.js" type="BINDATA" />
        </if>
 -      <if expr="is_win or is_macosx or (is_linux and not chromeos)">
diff --git a/devel/electron11/files/patch-chrome_browser_chrome__browser__interface__binders.cc b/devel/electron12/files/patch-chrome_browser_chrome__browser__interface__binders.cc
similarity index 79%
rename from devel/electron11/files/patch-chrome_browser_chrome__browser__interface__binders.cc
rename to devel/electron12/files/patch-chrome_browser_chrome__browser__interface__binders.cc
index 02fe5db980aa06fb6feffe2c01ec8eb3c7ce2f5f..08a2ba67f04365de10e22eb115a7a3c33fe0e306 100644
--- a/devel/electron11/files/patch-chrome_browser_chrome__browser__interface__binders.cc
+++ b/devel/electron12/files/patch-chrome_browser_chrome__browser__interface__binders.cc
@@ -1,15 +1,15 @@
---- chrome/browser/chrome_browser_interface_binders.cc.orig	2021-01-07 00:36:21 UTC
+--- chrome/browser/chrome_browser_interface_binders.cc.orig	2021-04-14 01:08:38 UTC
 +++ chrome/browser/chrome_browser_interface_binders.cc
-@@ -128,7 +128,7 @@
- #include "media/mojo/mojom/speech_recognition_service.mojom.h"
- #endif
+@@ -138,7 +138,7 @@
+ #include "mojo/public/cpp/bindings/self_owned_receiver.h"
+ #endif  // defined(OS_ANDROID)
  
 -#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
 +#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD) || \
      defined(OS_CHROMEOS)
  #include "chrome/browser/ui/webui/discards/discards.mojom.h"
  #include "chrome/browser/ui/webui/discards/discards_ui.h"
-@@ -730,7 +730,7 @@ void PopulateChromeWebUIFrameBinders(
+@@ -835,7 +835,7 @@ void PopulateChromeWebUIFrameBinders(
    }
  #endif
  
diff --git a/devel/electron11/files/patch-chrome_browser_chrome__browser__main.cc b/devel/electron12/files/patch-chrome_browser_chrome__browser__main.cc
similarity index 67%
rename from devel/electron11/files/patch-chrome_browser_chrome__browser__main.cc
rename to devel/electron12/files/patch-chrome_browser_chrome__browser__main.cc
index f797dc82ed6222e78a8bc32b6b1996dea4bdeece..c71eb84152395b4141364aaccdab1986fa040b23 100644
--- a/devel/electron11/files/patch-chrome_browser_chrome__browser__main.cc
+++ b/devel/electron12/files/patch-chrome_browser_chrome__browser__main.cc
@@ -1,15 +1,15 @@
---- chrome/browser/chrome_browser_main.cc.orig	2021-01-07 00:36:21 UTC
+--- chrome/browser/chrome_browser_main.cc.orig	2021-04-14 01:08:38 UTC
 +++ chrome/browser/chrome_browser_main.cc
-@@ -246,7 +246,7 @@
- #endif  // defined(OS_WIN)
- 
+@@ -251,7 +251,7 @@
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
  #if defined(OS_WIN) || defined(OS_MAC) || \
--    (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+-    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
  #include "chrome/browser/metrics/desktop_session_duration/desktop_session_duration_tracker.h"
  #include "chrome/browser/metrics/desktop_session_duration/touch_mode_stats_tracker.h"
  #include "chrome/browser/profiles/profile_activity_metrics_recorder.h"
-@@ -925,7 +925,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() {
+@@ -935,7 +935,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() {
        AddFirstRunNewTabs(browser_creator_.get(), master_prefs_->new_tabs);
      }
  
@@ -18,25 +18,25 @@
      // Create directory for user-level Native Messaging manifest files. This
      // makes it less likely that the directory will be created by third-party
      // software with incorrect owner or permission. See crbug.com/725513 .
-@@ -934,7 +934,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() {
+@@ -944,7 +944,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() {
                                   &user_native_messaging_dir));
      if (!base::PathExists(user_native_messaging_dir))
        base::CreateDirectory(user_native_messaging_dir);
 -#endif  // defined(OS_MAC) || defined(OS_LINUX) || defined(OS_CHROMEOS)
 +#endif  // defined(OS_MAC) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    }
- #endif  // !defined(OS_ANDROID) && !defined(OS_CHROMEOS)
- 
-@@ -956,7 +956,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() {
- #endif  // defined(OS_MAC)
+ #endif  // !defined(OS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH)
  
+@@ -968,7 +968,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
  #if defined(OS_WIN) || defined(OS_MAC) || \
--    (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+-    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
    metrics::DesktopSessionDurationTracker::Initialize();
    ProfileActivityMetricsRecorder::Initialize();
    TouchModeStatsTracker::Initialize(
-@@ -1113,6 +1113,7 @@ void ChromeBrowserMainParts::PostBrowserStart() {
+@@ -1125,6 +1125,7 @@ void ChromeBrowserMainParts::PostBrowserStart() {
        base::TimeDelta::FromMinutes(1));
  
  #if !defined(OS_ANDROID)
@@ -44,7 +44,7 @@
    if (base::FeatureList::IsEnabled(features::kWebUsb)) {
      web_usb_detector_.reset(new WebUsbDetector());
      content::GetUIThreadTaskRunner({base::TaskPriority::BEST_EFFORT})
-@@ -1120,6 +1121,7 @@ void ChromeBrowserMainParts::PostBrowserStart() {
+@@ -1132,6 +1133,7 @@ void ChromeBrowserMainParts::PostBrowserStart() {
                     base::BindOnce(&WebUsbDetector::Initialize,
                                    base::Unretained(web_usb_detector_.get())));
    }
diff --git a/devel/electron11/files/patch-chrome_browser_chrome__browser__main__linux.cc b/devel/electron12/files/patch-chrome_browser_chrome__browser__main__linux.cc
similarity index 62%
rename from devel/electron11/files/patch-chrome_browser_chrome__browser__main__linux.cc
rename to devel/electron12/files/patch-chrome_browser_chrome__browser__main__linux.cc
index 5c0a19d40ae2849474915d821aeb3761700dd058..52f2ab5aaa28bce89899ab32356e3a6897af3e3d 100644
--- a/devel/electron11/files/patch-chrome_browser_chrome__browser__main__linux.cc
+++ b/devel/electron12/files/patch-chrome_browser_chrome__browser__main__linux.cc
@@ -1,6 +1,6 @@
---- chrome/browser/chrome_browser_main_linux.cc.orig	2021-01-07 00:36:21 UTC
+--- chrome/browser/chrome_browser_main_linux.cc.orig	2021-04-14 01:08:38 UTC
 +++ chrome/browser/chrome_browser_main_linux.cc
-@@ -81,6 +81,7 @@ void ChromeBrowserMainPartsLinux::PreProfileInit() {
+@@ -82,6 +82,7 @@ void ChromeBrowserMainPartsLinux::PreProfileInit() {
  void ChromeBrowserMainPartsLinux::PostProfileInit() {
    ChromeBrowserMainPartsPosix::PostProfileInit();
  
@@ -8,7 +8,7 @@
    bool breakpad_registered;
    if (crash_reporter::IsCrashpadEnabled()) {
      // If we're using crashpad, there's no breakpad and crashpad is always
-@@ -98,10 +99,11 @@ void ChromeBrowserMainPartsLinux::PostProfileInit() {
+@@ -99,10 +100,11 @@ void ChromeBrowserMainPartsLinux::PostProfileInit() {
    }
    g_browser_process->metrics_service()->RecordBreakpadRegistration(
        breakpad_registered);
@@ -16,17 +16,17 @@
  }
  
  void ChromeBrowserMainPartsLinux::PostMainMessageLoopStart() {
--#if !defined(OS_CHROMEOS)
-+#if !defined(OS_CHROMEOS) && !defined(OS_BSD)
+-#if !BUILDFLAG(IS_CHROMEOS_ASH)
++#if !BUILDFLAG(IS_CHROMEOS_ASH) && !defined(OS_BSD)
    bluez::BluezDBusManager::Initialize(nullptr /* system_bus */);
  #endif
  
-@@ -109,7 +111,7 @@ void ChromeBrowserMainPartsLinux::PostMainMessageLoopS
+@@ -110,7 +112,7 @@ void ChromeBrowserMainPartsLinux::PostMainMessageLoopS
  }
  
  void ChromeBrowserMainPartsLinux::PostDestroyThreads() {
--#if !defined(OS_CHROMEOS)
-+#if !defined(OS_CHROMEOS) && !defined(OS_BSD)
+-#if !BUILDFLAG(IS_CHROMEOS_ASH)
++#if !BUILDFLAG(IS_CHROMEOS_ASH) && !defined(OS_BSD)
    bluez::BluezDBusManager::Shutdown();
    bluez::BluezDBusThreadManager::Shutdown();
  #endif
diff --git a/devel/electron12/files/patch-chrome_browser_chrome__browser__main__posix.cc b/devel/electron12/files/patch-chrome_browser_chrome__browser__main__posix.cc
new file mode 100644
index 0000000000000000000000000000000000000000..929851984c38a5e9be0ccca77e51934041df32b3
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_chrome__browser__main__posix.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/chrome_browser_main_posix.cc.orig	2021-04-14 01:08:38 UTC
++++ chrome/browser/chrome_browser_main_posix.cc
+@@ -72,7 +72,7 @@ void ExitHandler::ExitWhenPossibleOnUIThread(int signa
+   } else {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+     switch (signal) {
+       case SIGINT:
+       case SIGHUP:
diff --git a/devel/electron12/files/patch-chrome_browser_chrome__content__browser__client.cc b/devel/electron12/files/patch-chrome_browser_chrome__content__browser__client.cc
new file mode 100644
index 0000000000000000000000000000000000000000..af556f7d4586830fac1c33f22a24ea50f69ac80e
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_chrome__content__browser__client.cc
@@ -0,0 +1,106 @@
+--- chrome/browser/chrome_content_browser_client.cc.orig	2021-04-14 01:08:38 UTC
++++ chrome/browser/chrome_content_browser_client.cc
+@@ -448,7 +448,7 @@
+ #include "components/user_manager/user.h"
+ #include "components/user_manager/user_manager.h"
+ #include "services/service_manager/public/mojom/interface_provider_spec.mojom.h"
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #include "chrome/browser/chrome_browser_main_linux.h"
+ #elif defined(OS_ANDROID)
+ #include "base/android/application_status_listener.h"
+@@ -508,7 +508,7 @@
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+ #if defined(OS_WIN) || defined(OS_MAC) || \
+-    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+ #include "chrome/browser/browser_switcher/browser_switcher_navigation_throttle.h"
+ #endif
+ 
+@@ -542,7 +542,7 @@
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #include "chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.h"
+ #endif
+ 
+@@ -866,11 +866,13 @@ breakpad::CrashHandlerHostLinux* CreateCrashHandlerHos
+ }
+ 
+ int GetCrashSignalFD(const base::CommandLine& command_line) {
++#if !defined(OS_BSD)
+   if (crash_reporter::IsCrashpadEnabled()) {
+     int fd;
+     pid_t pid;
+     return crash_reporter::GetHandlerSocket(&fd, &pid) ? fd : -1;
+   }
++#endif
+ 
+   // Extensions have the same process type as renderers.
+   if (command_line.HasSwitch(extensions::switches::kExtensionProcess)) {
+@@ -1417,7 +1419,7 @@ ChromeContentBrowserClient::CreateBrowserMainParts(
+ #elif BUILDFLAG(IS_CHROMEOS_LACROS)
+   main_parts = std::make_unique<ChromeBrowserMainPartsLacros>(parameters,
+                                                               &startup_data_);
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   main_parts =
+       std::make_unique<ChromeBrowserMainPartsLinux>(parameters, &startup_data_);
+ #elif defined(OS_ANDROID)
+@@ -1448,7 +1450,7 @@ ChromeContentBrowserClient::CreateBrowserMainParts(
+       std::make_unique<ChromeBrowserMainExtraPartsViewsLacros>());
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   main_parts->AddParts(
+       std::make_unique<ChromeBrowserMainExtraPartsViewsLinux>());
+ #else
+@@ -2205,7 +2207,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLin
+     command_line->AppendSwitchASCII(switches::kMetricsClientID,
+                                     client_info->client_id);
+   }
+-#elif defined(OS_POSIX)
++#elif defined(OS_POSIX) && !defined(OS_BSD)
+ #if defined(OS_ANDROID)
+   bool enable_crash_reporter = true;
+ #else
+@@ -2499,7 +2501,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLin
+   ThreadProfilerConfiguration::Get()->AppendCommandLineSwitchForChildProcess(
+       command_line);
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   // Processes may only query perf_event_open with the BPF sandbox disabled.
+   if (browser_command_line.HasSwitch(switches::kEnableThreadInstructionCount) &&
+       command_line->HasSwitch(sandbox::policy::switches::kNoSandbox)) {
+@@ -3806,7 +3808,7 @@ void ChromeContentBrowserClient::GetAdditionalFileSyst
+   }
+ }
+ 
+-#if defined(OS_POSIX) && !defined(OS_MAC)
++#if defined(OS_POSIX) && !defined(OS_MAC) && !defined(OS_BSD)
+ void ChromeContentBrowserClient::GetAdditionalMappedFilesForChildProcess(
+     const base::CommandLine& command_line,
+     int child_process_id,
+@@ -3841,7 +3843,7 @@ void ChromeContentBrowserClient::GetAdditionalMappedFi
+     mappings->Share(kCrashDumpSignal, crash_signal_fd);
+   }
+ }
+-#endif  // defined(OS_POSIX) && !defined(OS_MAC)
++#endif  // defined(OS_POSIX) && !defined(OS_MAC) && !defined(OS_BSD)
+ 
+ #if defined(OS_WIN)
+ base::string16 ChromeContentBrowserClient::GetAppContainerSidForSandboxType(
+@@ -4165,7 +4167,7 @@ ChromeContentBrowserClient::CreateThrottlesForNavigati
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+ #if defined(OS_WIN) || defined(OS_MAC) || \
+-    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+   MaybeAddThrottle(browser_switcher::BrowserSwitcherNavigationThrottle::
+                        MaybeCreateThrottleFor(handle),
+                    &throttles);
diff --git a/devel/electron11/files/patch-chrome_browser_chrome__content__browser__client.h b/devel/electron12/files/patch-chrome_browser_chrome__content__browser__client.h
similarity index 84%
rename from devel/electron11/files/patch-chrome_browser_chrome__content__browser__client.h
rename to devel/electron12/files/patch-chrome_browser_chrome__content__browser__client.h
index d150912b311c15a1895eccabe2176769c784e228..03f7b89f878b55a29dfcd3e48e5c02f5f92a8520 100644
--- a/devel/electron11/files/patch-chrome_browser_chrome__content__browser__client.h
+++ b/devel/electron12/files/patch-chrome_browser_chrome__content__browser__client.h
@@ -1,6 +1,6 @@
---- chrome/browser/chrome_content_browser_client.h.orig	2021-01-07 00:36:21 UTC
+--- chrome/browser/chrome_content_browser_client.h.orig	2021-04-14 01:08:38 UTC
 +++ chrome/browser/chrome_content_browser_client.h
-@@ -395,12 +395,12 @@ class ChromeContentBrowserClient : public content::Con
+@@ -407,12 +407,12 @@ class ChromeContentBrowserClient : public content::Con
    void OverridePageVisibilityState(
        content::RenderFrameHost* render_frame_host,
        content::PageVisibilityState* visibility_state) override;
diff --git a/devel/electron11/files/patch-chrome_browser_crash__upload__list_crash__upload__list.cc b/devel/electron12/files/patch-chrome_browser_crash__upload__list_crash__upload__list.cc
similarity index 71%
rename from devel/electron11/files/patch-chrome_browser_crash__upload__list_crash__upload__list.cc
rename to devel/electron12/files/patch-chrome_browser_crash__upload__list_crash__upload__list.cc
index f3b9563dd3c18981bde9659c1019eca19f6b044f..80de8cf689835dbf111ed777fd47ae16f041af57 100644
--- a/devel/electron11/files/patch-chrome_browser_crash__upload__list_crash__upload__list.cc
+++ b/devel/electron12/files/patch-chrome_browser_crash__upload__list_crash__upload__list.cc
@@ -1,11 +1,11 @@
---- chrome/browser/crash_upload_list/crash_upload_list.cc.orig	2021-01-07 00:36:22 UTC
+--- chrome/browser/crash_upload_list/crash_upload_list.cc.orig	2021-04-14 01:08:39 UTC
 +++ chrome/browser/crash_upload_list/crash_upload_list.cc
-@@ -38,7 +38,7 @@ scoped_refptr<UploadList> CreateCrashUploadList() {
+@@ -39,7 +39,7 @@ scoped_refptr<UploadList> CreateCrashUploadList() {
  // ChromeOS uses crash_sender as its uploader even when Crashpad is enabled,
  // which isn't compatible with CrashUploadListCrashpad. crash_sender continues
  // to log uploads in CrashUploadList::kReporterLogFilename.
--#if !defined(OS_CHROMEOS)
-+#if !defined(OS_CHROMEOS) && !defined(OS_BSD)
+-#if !BUILDFLAG(IS_CHROMEOS_ASH)
++#if !BUILDFLAG(IS_CHROMEOS_ASH) && !defined(OS_BSD)
    if (crash_reporter::IsCrashpadEnabled()) {
      return new CrashUploadListCrashpad();
    }
diff --git a/devel/electron11/files/patch-chrome_browser_crash__upload__list_crash__upload__list__crashpad.cc b/devel/electron12/files/patch-chrome_browser_crash__upload__list_crash__upload__list__crashpad.cc
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_crash__upload__list_crash__upload__list__crashpad.cc
rename to devel/electron12/files/patch-chrome_browser_crash__upload__list_crash__upload__list__crashpad.cc
diff --git a/devel/electron11/files/patch-chrome_browser_custom__handlers_protocol__handler__registry.cc b/devel/electron12/files/patch-chrome_browser_custom__handlers_protocol__handler__registry.cc
similarity index 87%
rename from devel/electron11/files/patch-chrome_browser_custom__handlers_protocol__handler__registry.cc
rename to devel/electron12/files/patch-chrome_browser_custom__handlers_protocol__handler__registry.cc
index 90e004bbbaec8a61bb73f7d05e06137e1705e498..6261f1b3657a1d55c6e0e9204b2d9c0cf3d2b6fb 100644
--- a/devel/electron11/files/patch-chrome_browser_custom__handlers_protocol__handler__registry.cc
+++ b/devel/electron12/files/patch-chrome_browser_custom__handlers_protocol__handler__registry.cc
@@ -1,6 +1,6 @@
---- chrome/browser/custom_handlers/protocol_handler_registry.cc.orig	2021-01-07 00:36:22 UTC
+--- chrome/browser/custom_handlers/protocol_handler_registry.cc.orig	2021-04-14 01:08:39 UTC
 +++ chrome/browser/custom_handlers/protocol_handler_registry.cc
-@@ -43,7 +43,7 @@ const ProtocolHandler& LookupHandler(
+@@ -45,7 +45,7 @@ const ProtocolHandler& LookupHandler(
  // If true default protocol handlers will be removed if the OS level
  // registration for a protocol is no longer Chrome.
  bool ShouldRemoveHandlersNotInOS() {
diff --git a/devel/electron12/files/patch-chrome_browser_defaults.cc b/devel/electron12/files/patch-chrome_browser_defaults.cc
new file mode 100644
index 0000000000000000000000000000000000000000..232f3c31b08cc5f4f1ec1852364017c892aacbce
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_defaults.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/defaults.cc.orig	2021-04-14 01:08:39 UTC
++++ chrome/browser/defaults.cc
+@@ -46,7 +46,7 @@ const bool kSyncAutoStarts = false;
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ const bool kScrollEventChangesTab = true;
+ #else
+ const bool kScrollEventChangesTab = false;
diff --git a/devel/electron11/files/patch-chrome_browser_dev__ui__browser__resources.grd b/devel/electron12/files/patch-chrome_browser_dev__ui__browser__resources.grd
similarity index 66%
rename from devel/electron11/files/patch-chrome_browser_dev__ui__browser__resources.grd
rename to devel/electron12/files/patch-chrome_browser_dev__ui__browser__resources.grd
index ad62cc76776062f3261c2eb1fc781575b3a5718c..ec752b4de57263b72a1490043b5149c443ca7a92 100644
--- a/devel/electron11/files/patch-chrome_browser_dev__ui__browser__resources.grd
+++ b/devel/electron12/files/patch-chrome_browser_dev__ui__browser__resources.grd
@@ -1,11 +1,11 @@
---- chrome/browser/dev_ui_browser_resources.grd.orig	2021-01-07 00:36:22 UTC
+--- chrome/browser/dev_ui_browser_resources.grd.orig	2021-04-14 01:08:39 UTC
 +++ chrome/browser/dev_ui_browser_resources.grd
-@@ -57,7 +57,7 @@ This file specifies browser resources for developer-fa
+@@ -55,7 +55,7 @@ This file specifies browser resources for developer-fa
        <include name="IDR_MEDIA_SESSION_MOJOM_LITE_JS" file="${root_gen_dir}\services\media_session\public\mojom\media_session.mojom-lite.js" use_base_dir="false" type="BINDATA" />
        <include name="IDR_UI_GEOMETRY_MOJOM_LITE_JS" file="${root_gen_dir}\ui\gfx\geometry\mojom\geometry.mojom-lite.js" use_base_dir="false" type="BINDATA" />
  
 -      <if expr="is_android or is_linux">
 +      <if expr="is_android or is_posix">
-         <include name="IDR_SANDBOX_INTERNALS_HTML" file="resources\sandbox_internals\sandbox_internals.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" />
-         <include name="IDR_SANDBOX_INTERNALS_JS" file="resources\sandbox_internals\sandbox_internals.js" type="BINDATA" />
+         <include name="IDR_SANDBOX_INTERNALS_HTML" file="resources\sandbox_internals\sandbox_internals.html" preprocess="true" type="BINDATA" />
+         <include name="IDR_SANDBOX_INTERNALS_JS" file="resources\sandbox_internals\sandbox_internals.js" preprocess="true" type="BINDATA" />
        </if>
diff --git a/devel/electron11/files/patch-chrome_browser_device__identity_device__oauth2__token__service__factory.cc b/devel/electron12/files/patch-chrome_browser_device__identity_device__oauth2__token__service__factory.cc
similarity index 58%
rename from devel/electron11/files/patch-chrome_browser_device__identity_device__oauth2__token__service__factory.cc
rename to devel/electron12/files/patch-chrome_browser_device__identity_device__oauth2__token__service__factory.cc
index 5643259784d68f4db6bc8d5d19a387b85a23a295..d40208f602b376395fdb10d0a1311a14e17a9120 100644
--- a/devel/electron11/files/patch-chrome_browser_device__identity_device__oauth2__token__service__factory.cc
+++ b/devel/electron12/files/patch-chrome_browser_device__identity_device__oauth2__token__service__factory.cc
@@ -1,11 +1,11 @@
---- chrome/browser/device_identity/device_oauth2_token_service_factory.cc.orig	2021-01-07 00:36:22 UTC
+--- chrome/browser/device_identity/device_oauth2_token_service_factory.cc.orig	2021-04-14 01:08:39 UTC
 +++ chrome/browser/device_identity/device_oauth2_token_service_factory.cc
-@@ -28,7 +28,7 @@ std::unique_ptr<DeviceOAuth2TokenStore> CreatePlatform
- #if defined(OS_CHROMEOS)
+@@ -30,7 +30,7 @@ std::unique_ptr<DeviceOAuth2TokenStore> CreatePlatform
    return std::make_unique<chromeos::DeviceOAuth2TokenStoreChromeOS>(
        local_state);
--#elif defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX)
-+#elif defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD)
+ #elif defined(OS_WIN) || defined(OS_MAC) || \
+-    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
    DCHECK(
        base::FeatureList::IsEnabled(policy::features::kCBCMPolicyInvalidations));
    return std::make_unique<DeviceOAuth2TokenStoreDesktop>(local_state);
diff --git a/devel/electron11/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc b/devel/electron12/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc
similarity index 73%
rename from devel/electron11/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc
rename to devel/electron12/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc
index 346dfeaab9abaf057bcd60872f2f5af23148a03b..23087336896e19e6bda0e5f4c9f845815cffb200 100644
--- a/devel/electron11/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc
+++ b/devel/electron12/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc
@@ -1,6 +1,6 @@
---- chrome/browser/devtools/devtools_eye_dropper.cc.orig	2021-01-07 00:36:22 UTC
+--- chrome/browser/devtools/devtools_eye_dropper.cc.orig	2021-04-14 01:08:39 UTC
 +++ chrome/browser/devtools/devtools_eye_dropper.cc
-@@ -163,7 +163,7 @@ void DevToolsEyeDropper::UpdateCursor() {
+@@ -165,7 +165,7 @@ void DevToolsEyeDropper::UpdateCursor() {
  // magnified projection only with centered hotspot.
  // Mac Retina requires cursor to be > 120px in order to render smoothly.
  
diff --git a/devel/electron11/files/patch-chrome_browser_diagnostics_diagnostics__writer.h b/devel/electron12/files/patch-chrome_browser_diagnostics_diagnostics__writer.h
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_diagnostics_diagnostics__writer.h
rename to devel/electron12/files/patch-chrome_browser_diagnostics_diagnostics__writer.h
diff --git a/devel/electron11/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc b/devel/electron12/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc
similarity index 57%
rename from devel/electron11/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc
rename to devel/electron12/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc
index 798c6a0768f7bf20f55e709509a4f2d2b6b07a07..b1abd62fa4d3e9ec671b8e844e170cc0cf9606c7 100644
--- a/devel/electron11/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc
+++ b/devel/electron12/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc
@@ -1,6 +1,6 @@
---- chrome/browser/download/chrome_download_manager_delegate.cc.orig	2021-01-07 00:36:22 UTC
+--- chrome/browser/download/chrome_download_manager_delegate.cc.orig	2021-04-14 01:08:39 UTC
 +++ chrome/browser/download/chrome_download_manager_delegate.cc
-@@ -1393,7 +1393,7 @@ void ChromeDownloadManagerDelegate::OnDownloadTargetDe
+@@ -1443,7 +1443,7 @@ void ChromeDownloadManagerDelegate::OnDownloadTargetDe
          target_info->is_filetype_handled_safely)
        DownloadItemModel(item).SetShouldPreferOpeningInBrowser(true);
  
@@ -9,7 +9,7 @@
      if (item->GetOriginalMimeType() == "application/x-x509-user-cert")
        DownloadItemModel(item).SetShouldPreferOpeningInBrowser(true);
  #endif
-@@ -1445,7 +1445,7 @@ void ChromeDownloadManagerDelegate::OnDownloadTargetDe
+@@ -1496,7 +1496,7 @@ void ChromeDownloadManagerDelegate::OnDownloadTargetDe
  
  bool ChromeDownloadManagerDelegate::IsOpenInBrowserPreferreredForFile(
      const base::FilePath& path) {
@@ -18,3 +18,12 @@
      defined(OS_MAC)
    if (path.MatchesExtension(FILE_PATH_LITERAL(".pdf"))) {
      return !download_prefs_->ShouldOpenPdfInSystemReader();
+@@ -1593,7 +1593,7 @@ void ChromeDownloadManagerDelegate::CheckDownloadAllow
+     bool content_initiated,
+     content::CheckDownloadAllowedCallback check_download_allowed_cb) {
+   DCHECK_CURRENTLY_ON(BrowserThread::UI);
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) || \
+     defined(OS_MAC)
+   // Don't download pdf if it is a file URL, as that might cause an infinite
+   // download loop if Chrome is not the system pdf viewer.
diff --git a/devel/electron11/files/patch-chrome_browser_download_download__commands.cc b/devel/electron12/files/patch-chrome_browser_download_download__commands.cc
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_download_download__commands.cc
rename to devel/electron12/files/patch-chrome_browser_download_download__commands.cc
diff --git a/devel/electron11/files/patch-chrome_browser_download_download__commands.h b/devel/electron12/files/patch-chrome_browser_download_download__commands.h
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_download_download__commands.h
rename to devel/electron12/files/patch-chrome_browser_download_download__commands.h
diff --git a/devel/electron11/files/patch-chrome_browser_download_download__item__model.cc b/devel/electron12/files/patch-chrome_browser_download_download__item__model.cc
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_download_download__item__model.cc
rename to devel/electron12/files/patch-chrome_browser_download_download__item__model.cc
diff --git a/devel/electron11/files/patch-chrome_browser_download_download__prefs.cc b/devel/electron12/files/patch-chrome_browser_download_download__prefs.cc
similarity index 83%
rename from devel/electron11/files/patch-chrome_browser_download_download__prefs.cc
rename to devel/electron12/files/patch-chrome_browser_download_download__prefs.cc
index 4d0eb1dda2e776232179e224de9762e4360a223f..eefb1a752e9d70b79bb1fcd3fa890a6587b91f22 100644
--- a/devel/electron11/files/patch-chrome_browser_download_download__prefs.cc
+++ b/devel/electron12/files/patch-chrome_browser_download_download__prefs.cc
@@ -1,6 +1,6 @@
---- chrome/browser/download/download_prefs.cc.orig	2021-01-07 00:36:22 UTC
+--- chrome/browser/download/download_prefs.cc.orig	2021-04-14 01:08:39 UTC
 +++ chrome/browser/download/download_prefs.cc
-@@ -67,7 +67,7 @@ namespace {
+@@ -68,7 +68,7 @@ namespace {
  // Consider downloads 'dangerous' if they go to the home directory on Linux and
  // to the desktop on any platform.
  bool DownloadPathIsDangerous(const base::FilePath& download_path) {
@@ -9,16 +9,16 @@
    base::FilePath home_dir = base::GetHomeDir();
    if (download_path == home_dir) {
      return true;
-@@ -172,7 +172,7 @@ DownloadPrefs::DownloadPrefs(Profile* profile) : profi
+@@ -173,7 +173,7 @@ DownloadPrefs::DownloadPrefs(Profile* profile) : profi
                                  GetDefaultDownloadDirectoryForProfile()));
- #endif  // defined(OS_CHROMEOS)
+ #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
  
 -#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
 +#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) || \
      defined(OS_MAC)
    should_open_pdf_in_system_reader_ =
        prefs->GetBoolean(prefs::kOpenPdfDownloadInSystemReader);
-@@ -300,7 +300,7 @@ void DownloadPrefs::RegisterProfilePrefs(
+@@ -301,7 +301,7 @@ void DownloadPrefs::RegisterProfilePrefs(
                                   default_download_path);
    registry->RegisterFilePathPref(prefs::kSaveFileDefaultDirectory,
                                   default_download_path);
@@ -27,7 +27,7 @@
      defined(OS_MAC)
    registry->RegisterBooleanPref(prefs::kOpenPdfDownloadInSystemReader, false);
  #endif
-@@ -430,7 +430,7 @@ bool DownloadPrefs::IsDownloadPathManaged() const {
+@@ -431,7 +431,7 @@ bool DownloadPrefs::IsDownloadPathManaged() const {
  }
  
  bool DownloadPrefs::IsAutoOpenByUserUsed() const {
@@ -36,7 +36,7 @@
      defined(OS_MAC)
    if (ShouldOpenPdfInSystemReader())
      return true;
-@@ -445,7 +445,7 @@ bool DownloadPrefs::IsAutoOpenEnabled(const GURL& url,
+@@ -446,7 +446,7 @@ bool DownloadPrefs::IsAutoOpenEnabled(const GURL& url,
      return false;
    DCHECK(extension[0] == base::FilePath::kExtensionSeparator);
    extension.erase(0, 1);
@@ -45,7 +45,7 @@
      defined(OS_MAC)
    if (base::FilePath::CompareEqualIgnoreCase(extension,
                                               FILE_PATH_LITERAL("pdf")) &&
-@@ -496,7 +496,7 @@ void DownloadPrefs::DisableAutoOpenByUserBasedOnExtens
+@@ -497,7 +497,7 @@ void DownloadPrefs::DisableAutoOpenByUserBasedOnExtens
    SaveAutoOpenState();
  }
  
@@ -54,7 +54,7 @@
      defined(OS_MAC)
  void DownloadPrefs::SetShouldOpenPdfInSystemReader(bool should_open) {
    if (should_open_pdf_in_system_reader_ == should_open)
-@@ -518,7 +518,7 @@ bool DownloadPrefs::ShouldOpenPdfInSystemReader() cons
+@@ -519,7 +519,7 @@ bool DownloadPrefs::ShouldOpenPdfInSystemReader() cons
  #endif
  
  void DownloadPrefs::ResetAutoOpenByUser() {
diff --git a/devel/electron11/files/patch-chrome_browser_download_download__prefs.h b/devel/electron12/files/patch-chrome_browser_download_download__prefs.h
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_download_download__prefs.h
rename to devel/electron12/files/patch-chrome_browser_download_download__prefs.h
diff --git a/devel/electron11/files/patch-chrome_browser_download_download__query.cc b/devel/electron12/files/patch-chrome_browser_download_download__query.cc
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_download_download__query.cc
rename to devel/electron12/files/patch-chrome_browser_download_download__query.cc
diff --git a/devel/electron11/files/patch-chrome_browser_download_download__shelf__context__menu.cc b/devel/electron12/files/patch-chrome_browser_download_download__shelf__context__menu.cc
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_download_download__shelf__context__menu.cc
rename to devel/electron12/files/patch-chrome_browser_download_download__shelf__context__menu.cc
diff --git a/devel/electron12/files/patch-chrome_browser_error__reporting_BUILD.gn b/devel/electron12/files/patch-chrome_browser_error__reporting_BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..ec37b2666db10205831ece622afaf32c5da9ec5b
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_error__reporting_BUILD.gn
@@ -0,0 +1,42 @@
+--- chrome/browser/error_reporting/BUILD.gn.orig	2021-04-14 01:08:39 UTC
++++ chrome/browser/error_reporting/BUILD.gn
+@@ -25,6 +25,13 @@ static_library("error_reporting") {
+     "//services/network:network_service",
+     "//services/network/public/cpp",
+   ]
++
++  if (is_bsd) {
++    deps -= [
++      "//components/crash/content/browser/error_reporting",
++      "//components/crash/core/app",
++    ]
++  }
+ }
+ 
+ source_set("test_support") {
+@@ -42,6 +49,12 @@ source_set("test_support") {
+     "//components/crash/content/browser/error_reporting",
+     "//components/crash/content/browser/error_reporting:mock_crash_endpoint",
+   ]
++
++  if (is_bsd) {
++    deps -= [
++      "//components/crash/content/browser/error_reporting:mock_crash_endpoint",
++    ]
++  }
+ }
+ 
+ source_set("unit_test") {
+@@ -60,4 +73,12 @@ source_set("unit_test") {
+     "//net:test_support",
+     "//testing/gtest",
+   ]
++
++  if (is_bsd) {
++    deps -= [
++      "//components/crash/content/browser/error_reporting",
++      "//components/crash/content/browser/error_reporting:mock_crash_endpoint",
++      "//components/crash/core/app",
++    ]
++  }
+ }
diff --git a/devel/electron11/files/patch-chrome_browser_extensions_BUILD.gn b/devel/electron12/files/patch-chrome_browser_extensions_BUILD.gn
similarity index 59%
rename from devel/electron11/files/patch-chrome_browser_extensions_BUILD.gn
rename to devel/electron12/files/patch-chrome_browser_extensions_BUILD.gn
index 9f3243ff27bddc4cddee8e43b639250463577ebb..2e297e28611f723ae49e40ecc8c37c03cd77f624 100644
--- a/devel/electron11/files/patch-chrome_browser_extensions_BUILD.gn
+++ b/devel/electron12/files/patch-chrome_browser_extensions_BUILD.gn
@@ -1,7 +1,7 @@
---- chrome/browser/extensions/BUILD.gn.orig	2021-01-07 00:36:22 UTC
+--- chrome/browser/extensions/BUILD.gn.orig	2021-04-14 01:08:39 UTC
 +++ chrome/browser/extensions/BUILD.gn
-@@ -1219,6 +1219,12 @@ static_library("extensions") {
-     deps += [ "//chrome/common:service_process_mojom" ]
+@@ -1248,6 +1248,12 @@ static_library("extensions") {
+     ]
    }
  
 +  if (is_bsd) {
diff --git a/devel/electron11/files/patch-chrome_browser_extensions_activity__log_activity__log.cc b/devel/electron12/files/patch-chrome_browser_extensions_activity__log_activity__log.cc
similarity index 79%
rename from devel/electron11/files/patch-chrome_browser_extensions_activity__log_activity__log.cc
rename to devel/electron12/files/patch-chrome_browser_extensions_activity__log_activity__log.cc
index dc6d9999b971b73d5779106a54ab498e088ec56d..3ec970ea5f4c7cb9ed80b79e4d31447d01732283 100644
--- a/devel/electron11/files/patch-chrome_browser_extensions_activity__log_activity__log.cc
+++ b/devel/electron12/files/patch-chrome_browser_extensions_activity__log_activity__log.cc
@@ -1,9 +1,9 @@
---- chrome/browser/extensions/activity_log/activity_log.cc.orig	2021-01-07 00:36:22 UTC
+--- chrome/browser/extensions/activity_log/activity_log.cc.orig	2021-04-14 01:08:39 UTC
 +++ chrome/browser/extensions/activity_log/activity_log.cc
-@@ -47,7 +47,11 @@
- #include "extensions/browser/extensions_browser_client.h"
+@@ -49,7 +49,11 @@
  #include "extensions/common/extension.h"
  #include "extensions/common/extension_messages.h"
+ #include "extensions/common/mojom/renderer.mojom.h"
 +#if defined(OS_BSD)
 +#include <re2/re2.h>
 +#else
diff --git a/devel/electron11/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_chrome__desktop__report__request__helper.cc b/devel/electron12/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_chrome__desktop__report__request__helper.cc
similarity index 85%
rename from devel/electron11/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_chrome__desktop__report__request__helper.cc
rename to devel/electron12/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_chrome__desktop__report__request__helper.cc
index e96d67277feee957b904bf2ccbe82599618b60cd..24255ca085a54408b94caf81ba40d981ca327447 100644
--- a/devel/electron11/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_chrome__desktop__report__request__helper.cc
+++ b/devel/electron12/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_chrome__desktop__report__request__helper.cc
@@ -1,4 +1,4 @@
---- chrome/browser/extensions/api/enterprise_reporting_private/chrome_desktop_report_request_helper.cc.orig	2021-01-07 00:36:22 UTC
+--- chrome/browser/extensions/api/enterprise_reporting_private/chrome_desktop_report_request_helper.cc.orig	2021-04-14 01:08:39 UTC
 +++ chrome/browser/extensions/api/enterprise_reporting_private/chrome_desktop_report_request_helper.cc
 @@ -22,7 +22,7 @@
  #include "base/win/registry.h"
@@ -9,7 +9,7 @@
  #include "base/environment.h"
  #include "base/nix/xdg_util.h"
  #endif
-@@ -226,7 +226,7 @@ base::FilePath GetEndpointVerificationDir() {
+@@ -238,7 +238,7 @@ base::FilePath GetEndpointVerificationDir() {
      return *GetEndpointVerificationDirOverride();
  #if defined(OS_WIN)
    if (!base::PathService::Get(base::DIR_LOCAL_APP_DATA, &path))
@@ -18,7 +18,7 @@
    std::unique_ptr<base::Environment> env(base::Environment::Create());
    path = base::nix::GetXDGDirectory(env.get(), base::nix::kXdgConfigHomeEnvVar,
                                      base::nix::kDotConfigDir);
-@@ -237,7 +237,7 @@ base::FilePath GetEndpointVerificationDir() {
+@@ -249,7 +249,7 @@ base::FilePath GetEndpointVerificationDir() {
    if (true)
  #endif
      return path;
diff --git a/devel/electron11/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_device__info__fetcher.cc b/devel/electron12/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_device__info__fetcher.cc
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_device__info__fetcher.cc
rename to devel/electron12/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_device__info__fetcher.cc
diff --git a/devel/electron11/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_device__info__fetcher__linux.cc b/devel/electron12/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_device__info__fetcher__linux.cc
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_device__info__fetcher__linux.cc
rename to devel/electron12/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_device__info__fetcher__linux.cc
diff --git a/devel/electron11/files/patch-chrome_browser_extensions_api_extension__action_browser__action__interactive__test.cc b/devel/electron12/files/patch-chrome_browser_extensions_api_extension__action_browser__action__interactive__test.cc
similarity index 84%
rename from devel/electron11/files/patch-chrome_browser_extensions_api_extension__action_browser__action__interactive__test.cc
rename to devel/electron12/files/patch-chrome_browser_extensions_api_extension__action_browser__action__interactive__test.cc
index 319e8501931a1b0784ba5198f5f991716c1a5f1e..fbe140100cee0d4d7fd40b82493763faa8220c30 100644
--- a/devel/electron11/files/patch-chrome_browser_extensions_api_extension__action_browser__action__interactive__test.cc
+++ b/devel/electron12/files/patch-chrome_browser_extensions_api_extension__action_browser__action__interactive__test.cc
@@ -1,6 +1,6 @@
---- chrome/browser/extensions/api/extension_action/browser_action_interactive_test.cc.orig	2021-01-07 00:36:22 UTC
+--- chrome/browser/extensions/api/extension_action/browser_action_interactive_test.cc.orig	2021-04-14 01:08:39 UTC
 +++ chrome/browser/extensions/api/extension_action/browser_action_interactive_test.cc
-@@ -277,7 +277,7 @@ IN_PROC_BROWSER_TEST_F(BrowserActionInteractiveTest, T
+@@ -281,7 +281,7 @@ IN_PROC_BROWSER_TEST_F(BrowserActionInteractiveTest, T
    frame_observer.Wait();
    // Non-Aura Linux uses a singleton for the popup, so it looks like all windows
    // have popups if there is any popup open.
diff --git a/devel/electron11/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc b/devel/electron12/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc
rename to devel/electron12/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc
diff --git a/devel/electron11/files/patch-chrome_browser_extensions_api_runtime_chrome__runtime__api__delegate.cc b/devel/electron12/files/patch-chrome_browser_extensions_api_runtime_chrome__runtime__api__delegate.cc
similarity index 84%
rename from devel/electron11/files/patch-chrome_browser_extensions_api_runtime_chrome__runtime__api__delegate.cc
rename to devel/electron12/files/patch-chrome_browser_extensions_api_runtime_chrome__runtime__api__delegate.cc
index b806a3ec5f4446bdc366e5ab6ae3c06be8f845fa..849e45868ad7453e6d223ed67384da4f6cfbc64c 100644
--- a/devel/electron11/files/patch-chrome_browser_extensions_api_runtime_chrome__runtime__api__delegate.cc
+++ b/devel/electron12/files/patch-chrome_browser_extensions_api_runtime_chrome__runtime__api__delegate.cc
@@ -1,6 +1,6 @@
---- chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc.orig	2021-01-07 00:36:22 UTC
+--- chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc.orig	2021-04-14 01:08:39 UTC
 +++ chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc
-@@ -284,6 +284,8 @@ bool ChromeRuntimeAPIDelegate::GetPlatformInfo(Platfor
+@@ -286,6 +286,8 @@ bool ChromeRuntimeAPIDelegate::GetPlatformInfo(Platfor
      info->os = extensions::api::runtime::PLATFORM_OS_CROS;
    } else if (strcmp(os, "linux") == 0) {
      info->os = extensions::api::runtime::PLATFORM_OS_LINUX;
diff --git a/devel/electron12/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc b/devel/electron12/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc
new file mode 100644
index 0000000000000000000000000000000000000000..5110fd873ea0fa39140d4004b916d11b1ea933c1
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/extensions/api/settings_private/prefs_util.cc.orig	2021-04-14 01:08:39 UTC
++++ chrome/browser/extensions/api/settings_private/prefs_util.cc
+@@ -176,7 +176,7 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlist
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   (*s_allowlist)[::prefs::kUseCustomChromeFrame] =
+       settings_api::PrefType::PREF_TYPE_BOOLEAN;
+ #endif
+@@ -188,7 +188,7 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlist
+       settings_api::PrefType::PREF_TYPE_STRING;
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   (*s_allowlist)[::prefs::kUsesSystemTheme] =
+       settings_api::PrefType::PREF_TYPE_BOOLEAN;
+ #endif
diff --git a/devel/electron11/files/patch-chrome_browser_extensions_api_webrtc__logging__private_webrtc__logging__private__api.cc b/devel/electron12/files/patch-chrome_browser_extensions_api_webrtc__logging__private_webrtc__logging__private__api.cc
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_extensions_api_webrtc__logging__private_webrtc__logging__private__api.cc
rename to devel/electron12/files/patch-chrome_browser_extensions_api_webrtc__logging__private_webrtc__logging__private__api.cc
diff --git a/devel/electron11/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc b/devel/electron12/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc
similarity index 89%
rename from devel/electron11/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc
rename to devel/electron12/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc
index d34745bc4bd19b6c55f8457beaea06015659c08b..747849179d92e676b755ed7fb966b583bc2d680c 100644
--- a/devel/electron11/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc
+++ b/devel/electron12/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc
@@ -1,6 +1,6 @@
---- chrome/browser/extensions/browser_context_keyed_service_factories.cc.orig	2021-01-07 00:36:22 UTC
+--- chrome/browser/extensions/browser_context_keyed_service_factories.cc.orig	2021-04-14 01:08:39 UTC
 +++ chrome/browser/extensions/browser_context_keyed_service_factories.cc
-@@ -53,7 +53,7 @@
+@@ -54,7 +54,7 @@
  #include "extensions/browser/api/networking_private/networking_private_delegate_factory.h"
  #include "ppapi/buildflags/buildflags.h"
  
diff --git a/devel/electron11/files/patch-chrome_browser_extensions_external__provider__impl.cc b/devel/electron12/files/patch-chrome_browser_extensions_external__provider__impl.cc
similarity index 66%
rename from devel/electron11/files/patch-chrome_browser_extensions_external__provider__impl.cc
rename to devel/electron12/files/patch-chrome_browser_extensions_external__provider__impl.cc
index 0f3eff6015fdf5b206b7ff947ca43ec7facb6948..8ee8685fd01084586158dffccc2c43fe995157f2 100644
--- a/devel/electron11/files/patch-chrome_browser_extensions_external__provider__impl.cc
+++ b/devel/electron12/files/patch-chrome_browser_extensions_external__provider__impl.cc
@@ -1,15 +1,15 @@
---- chrome/browser/extensions/external_provider_impl.cc.orig	2021-01-07 00:36:22 UTC
+--- chrome/browser/extensions/external_provider_impl.cc.orig	2021-04-14 01:08:39 UTC
 +++ chrome/browser/extensions/external_provider_impl.cc
-@@ -776,7 +776,7 @@ void ExternalProviderImpl::CreateExternalProviders(
-   }
- #endif
+@@ -792,7 +792,7 @@ void ExternalProviderImpl::CreateExternalProviders(
    if (!profile->GetPrefs()->GetBoolean(pref_names::kBlockExternalExtensions)) {
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
      provider_list->push_back(std::make_unique<ExternalProviderImpl>(
          service,
          base::MakeRefCounted<ExternalPrefLoader>(
-@@ -803,7 +803,7 @@ void ExternalProviderImpl::CreateExternalProviders(
+@@ -819,7 +819,7 @@ void ExternalProviderImpl::CreateExternalProviders(
            bundled_extension_creation_flags));
  
        // Define a per-user source of external extensions.
diff --git a/devel/electron11/files/patch-chrome_browser_native__file__system_chrome__native__file__system__permission__context.cc b/devel/electron12/files/patch-chrome_browser_file__system__access_chrome__file__system__access__permission__context.cc
similarity index 68%
rename from devel/electron11/files/patch-chrome_browser_native__file__system_chrome__native__file__system__permission__context.cc
rename to devel/electron12/files/patch-chrome_browser_file__system__access_chrome__file__system__access__permission__context.cc
index ed67ff9057d61df03722019b9186f232f9c395e9..49f643df2e3ff423c207c02dd296914ee7d3a9f2 100644
--- a/devel/electron11/files/patch-chrome_browser_native__file__system_chrome__native__file__system__permission__context.cc
+++ b/devel/electron12/files/patch-chrome_browser_file__system__access_chrome__file__system__access__permission__context.cc
@@ -1,6 +1,6 @@
---- chrome/browser/native_file_system/chrome_native_file_system_permission_context.cc.orig	2021-01-07 00:36:23 UTC
-+++ chrome/browser/native_file_system/chrome_native_file_system_permission_context.cc
-@@ -138,7 +138,7 @@ const struct {
+--- chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc.orig	2021-04-14 01:08:40 UTC
++++ chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc
+@@ -144,7 +144,7 @@ const struct {
      {base::DIR_APP_DATA, nullptr, kBlockAllChildren},
      {base::DIR_HOME, FILE_PATH_LITERAL("Library"), kBlockAllChildren},
  #endif
diff --git a/devel/electron12/files/patch-chrome_browser_first__run_first__run__dialog.h b/devel/electron12/files/patch-chrome_browser_first__run_first__run__dialog.h
new file mode 100644
index 0000000000000000000000000000000000000000..0fbcd30d572e13229913a692d76c31291f043d4c
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_first__run_first__run__dialog.h
@@ -0,0 +1,11 @@
+--- chrome/browser/first_run/first_run_dialog.h.orig	2021-04-14 01:08:40 UTC
++++ chrome/browser/first_run/first_run_dialog.h
+@@ -12,7 +12,7 @@
+ // Hide this function on platforms where the dialog does not exist.
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_MAC) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if defined(OS_MAC) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+ 
+ class Profile;
+ 
diff --git a/devel/electron12/files/patch-chrome_browser_first__run_first__run__internal.h b/devel/electron12/files/patch-chrome_browser_first__run_first__run__internal.h
new file mode 100644
index 0000000000000000000000000000000000000000..bf91d0fb3e2f8cbff70cf3a3aad6bb651b746c09
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_first__run_first__run__internal.h
@@ -0,0 +1,19 @@
+--- chrome/browser/first_run/first_run_internal.h.orig	2021-04-14 01:08:40 UTC
++++ chrome/browser/first_run/first_run_internal.h
+@@ -58,14 +58,13 @@ FirstRunState DetermineFirstRunState(bool has_sentinel
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_MAC) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if defined(OS_MAC) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+ // For testing, forces the first run dialog to either be shown or not. If not
+ // called, the decision to show the dialog or not will be made by Chrome based
+ // on a number of factors (such as install type, whether it's a Chrome-branded
+ // build, etc).
+ void ForceFirstRunDialogShownForTesting(bool shown);
+-#endif  // defined(OS_MAC) || (defined(OS_LINUX) ||
+-        // BUILDFLAG(IS_CHROMEOS_LACROS))
++#endif  // defined(OS_MAC) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+ 
+ }  // namespace internal
+ }  // namespace first_run
diff --git a/devel/electron11/files/patch-chrome_browser_first__run_first__run__internal__posix.cc b/devel/electron12/files/patch-chrome_browser_first__run_first__run__internal__posix.cc
similarity index 65%
rename from devel/electron11/files/patch-chrome_browser_first__run_first__run__internal__posix.cc
rename to devel/electron12/files/patch-chrome_browser_first__run_first__run__internal__posix.cc
index dd779b87f9871a84ed160cc533c5086ca7adbd5d..4133d86f48b803d7312619f2690540db1cc2c158 100644
--- a/devel/electron11/files/patch-chrome_browser_first__run_first__run__internal__posix.cc
+++ b/devel/electron12/files/patch-chrome_browser_first__run_first__run__internal__posix.cc
@@ -1,20 +1,20 @@
---- chrome/browser/first_run/first_run_internal_posix.cc.orig	2021-01-07 00:36:23 UTC
+--- chrome/browser/first_run/first_run_internal_posix.cc.orig	2021-04-14 01:08:40 UTC
 +++ chrome/browser/first_run/first_run_internal_posix.cc
-@@ -45,7 +45,7 @@ enum class ForcedShowDialogState {
+@@ -46,7 +46,7 @@ enum class ForcedShowDialogState {
  ForcedShowDialogState g_forced_show_dialog_state =
      ForcedShowDialogState::kNotForced;
  
--#if !defined(OS_CHROMEOS)
-+#if !defined(OS_CHROMEOS) && !defined(OS_BSD)
+-#if !BUILDFLAG(IS_CHROMEOS_ASH)
++#if !BUILDFLAG(IS_CHROMEOS_ASH) && !defined(OS_BSD)
  // Returns whether the first run dialog should be shown. This is only true for
  // certain builds, and only if the user has not already set preferences. In a
  // real, official-build first run, initializes the default metrics reporting if
-@@ -96,7 +96,7 @@ void ForceFirstRunDialogShownForTesting(bool shown) {
+@@ -97,7 +97,7 @@ void ForceFirstRunDialogShownForTesting(bool shown) {
  }
  
  void DoPostImportPlatformSpecificTasks(Profile* profile) {
--#if !defined(OS_CHROMEOS)
-+#if !defined(OS_CHROMEOS) && !defined(OS_BSD)
+-#if !BUILDFLAG(IS_CHROMEOS_ASH)
++#if !BUILDFLAG(IS_CHROMEOS_ASH) && !defined(OS_BSD)
    if (!ShouldShowFirstRunDialog())
      return;
  
diff --git a/devel/electron11/files/patch-chrome_browser_flag__descriptions.cc b/devel/electron12/files/patch-chrome_browser_flag__descriptions.cc
similarity index 61%
rename from devel/electron11/files/patch-chrome_browser_flag__descriptions.cc
rename to devel/electron12/files/patch-chrome_browser_flag__descriptions.cc
index d1606f37f2ed5a874e05aab72b3b1ae453c62a05..03c35419de5e3454f353764161ba94d962de48a2 100644
--- a/devel/electron11/files/patch-chrome_browser_flag__descriptions.cc
+++ b/devel/electron12/files/patch-chrome_browser_flag__descriptions.cc
@@ -1,25 +1,15 @@
---- chrome/browser/flag_descriptions.cc.orig	2021-01-07 00:36:23 UTC
+--- chrome/browser/flag_descriptions.cc.orig	2021-04-14 01:08:40 UTC
 +++ chrome/browser/flag_descriptions.cc
-@@ -4555,15 +4555,15 @@ const char kEnableNewBadgeOnMenuItemsDescription[] =
+@@ -4774,7 +4774,7 @@ const char kEnableNewBadgeOnMenuItemsDescription[] =
  
  // Random platform combinations -----------------------------------------------
  
--#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
- 
- const char kWebGL2ComputeContextName[] = "WebGL 2.0 Compute";
- const char kWebGL2ComputeContextDescription[] =
-     "Enable the use of WebGL 2.0 Compute API.";
- 
--#endif  // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#endif  // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
- 
 -#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
 +#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD) || \
      defined(OS_CHROMEOS)
  
  const char kEnableMediaFeedsName[] = "Enables Media Feeds";
-@@ -4607,17 +4607,17 @@ const char kRemoteCopyProgressNotificationDescription[
+@@ -4818,27 +4818,27 @@ const char kRemoteCopyProgressNotificationDescription[
      "Enables progress notifications to be shown for the remote copy feature "
      "when receiving a message.";
  
@@ -39,11 +29,6 @@
 +#endif  // defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD) ||
          // defined(OS_CHROMEOS)
  
- #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_CHROMEOS)
-@@ -4629,14 +4629,14 @@ const char kWebContentsOcclusionDescription[] =
- 
- #endif  // defined(OS_WIN) || defined(OS_MAC) || defined(OS_CHROMEOS)
- 
 -#if defined(OS_CHROMEOS) || defined(OS_LINUX)
 +#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD)
  #if BUILDFLAG(USE_TCMALLOC)
@@ -55,20 +40,30 @@
 -#endif  // #if defined(OS_CHROMEOS) || defined(OS_LINUX)
 +#endif  // #if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD)
  
- #if !defined(OS_ANDROID) && !defined(OS_CHROMEOS)
+ #if !defined(OS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH)
  const char kUserDataSnapshotName[] = "Enable user data snapshots";
-@@ -4652,12 +4652,12 @@ const char kWebShareDescription[] =
-     "platforms.";
- #endif  // defined(OS_WIN) || defined(OS_CHROMEOS)
+@@ -4856,13 +4856,13 @@ const char kWebShareDescription[] =
  
--#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MAC)
-+#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MAC) || defined(OS_BSD)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_WIN) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || \
++#if defined(OS_WIN) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD) || \
+     defined(OS_MAC)
  const char kEnableEphemeralGuestProfilesOnDesktopName[] =
      "Enable ephemeral Guest profiles on Desktop";
  const char kEnableEphemeralGuestProfilesOnDesktopDescription[] =
      "Enables ephemeral Guest profiles on Windows, Linux, and Mac.";
--#endif  // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MAC)
-+#endif  // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MAC) || defined(OS_BSD)
+-#endif  // defined(OS_WIN) || (defined(OS_LINUX) ||
++#endif  // defined(OS_WIN) || (defined(OS_LINUX) || defined(OS_BSD) ||
+         // BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_MAC)
  
  // Feature flags --------------------------------------------------------------
+@@ -4955,7 +4955,7 @@ const char kAutofillCreditCardUploadDescription[] =
+ 
+ #endif  // defined(TOOLKIT_VIEWS) || defined(OS_ANDROID)
  
+-#if !defined(OS_WIN) && !defined(OS_FUCHSIA)
++#if !defined(OS_WIN) && !defined(OS_FUCHSIA) && !defined(OS_BSD)
+ const char kSendWebUIJavaScriptErrorReportsName[] =
+     "Send WebUI JavaScript Error Reports";
+ const char kSendWebUIJavaScriptErrorReportsDescription[] =
diff --git a/devel/electron11/files/patch-chrome_browser_flag__descriptions.h b/devel/electron12/files/patch-chrome_browser_flag__descriptions.h
similarity index 57%
rename from devel/electron11/files/patch-chrome_browser_flag__descriptions.h
rename to devel/electron12/files/patch-chrome_browser_flag__descriptions.h
index cf1903235ca0477a54a6446e500dab8f306971fa..fb2d564bc7e0a29184dff7c20220bb76f8248412 100644
--- a/devel/electron11/files/patch-chrome_browser_flag__descriptions.h
+++ b/devel/electron12/files/patch-chrome_browser_flag__descriptions.h
@@ -1,6 +1,6 @@
---- chrome/browser/flag_descriptions.h.orig	2021-01-07 00:36:23 UTC
+--- chrome/browser/flag_descriptions.h.orig	2021-04-14 01:08:40 UTC
 +++ chrome/browser/flag_descriptions.h
-@@ -19,9 +19,9 @@
+@@ -20,9 +20,9 @@
  #include "ppapi/buildflags/buildflags.h"
  #include "printing/buildflags/buildflags.h"
  
@@ -12,25 +12,16 @@
  
  // This file declares strings used in chrome://flags. These messages are not
  // translated, because instead of end-users they target Chromium developers and
-@@ -2649,14 +2649,14 @@ extern const char kEnableNewBadgeOnMenuItemsDescriptio
+@@ -2790,7 +2790,7 @@ extern const char kEnableNewBadgeOnMenuItemsDescriptio
  
  // Random platform combinations -----------------------------------------------
  
--#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
- 
- extern const char kWebGL2ComputeContextName[];
- extern const char kWebGL2ComputeContextDescription[];
- 
--#endif  // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#endif  // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
- 
 -#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
 +#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD) || \
      defined(OS_CHROMEOS)
  
  extern const char kEnableMediaFeedsName[];
-@@ -2683,7 +2683,7 @@ extern const char kRemoteCopyProgressNotificationDescr
+@@ -2817,15 +2817,15 @@ extern const char kRemoteCopyProgressNotificationDescr
  extern const char kDirectManipulationStylusName[];
  extern const char kDirectManipulationStylusDescription[];
  
@@ -38,11 +29,6 @@
 +#endif  // defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD) ||
          // defined(OS_CHROMEOS)
  
- #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_CHROMEOS)
-@@ -2693,12 +2693,12 @@ extern const char kWebContentsOcclusionDescription[];
- 
- #endif  // defined(OS_WIN) || defined(OS_MAC) || defined(OS_CHROMEOS)
- 
 -#if defined(OS_CHROMEOS) || defined(OS_LINUX)
 +#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD)
  #if BUILDFLAG(USE_TCMALLOC)
@@ -52,18 +38,28 @@
 -#endif  // #if defined(OS_CHROMEOS) || defined(OS_LINUX)
 +#endif  // #if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD)
  
- #if !defined(OS_ANDROID) && !defined(OS_CHROMEOS)
+ #if !defined(OS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH)
  extern const char kUserDataSnapshotName[];
-@@ -2710,10 +2710,10 @@ extern const char kWebShareName[];
- extern const char kWebShareDescription[];
- #endif  // defined(OS_WIN) || defined(OS_CHROMEOS)
+@@ -2839,11 +2839,11 @@ extern const char kWebShareDescription[];
  
--#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MAC)
-+#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MAC) || defined(OS_BSD)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_WIN) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || \
++#if defined(OS_WIN) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD) || \
+     defined(OS_MAC)
  extern const char kEnableEphemeralGuestProfilesOnDesktopName[];
  extern const char kEnableEphemeralGuestProfilesOnDesktopDescription[];
--#endif  // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MAC)
-+#endif  // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MAC) || defined(OS_BSD)
+-#endif  // defined(OS_WIN) || (defined(OS_LINUX) ||
++#endif  // defined(OS_WIN) || (defined(OS_LINUX) || defined(OS_BSD) ||
+         // BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_MAC)
  
  // Feature flags --------------------------------------------------------------
+@@ -2906,7 +2906,7 @@ extern const char kAutofillCreditCardUploadDescription
+ 
+ #endif  // defined(TOOLKIT_VIEWS) || defined(OS_ANDROID)
  
+-#if !defined(OS_WIN) && !defined(OS_FUCHSIA)
++#if !defined(OS_WIN) && !defined(OS_FUCHSIA) && !defined(OS_BSD)
+ extern const char kSendWebUIJavaScriptErrorReportsName[];
+ extern const char kSendWebUIJavaScriptErrorReportsDescription[];
+ #endif
diff --git a/devel/electron11/files/patch-chrome_browser_intranet__redirect__detector.h b/devel/electron12/files/patch-chrome_browser_intranet__redirect__detector.h
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_intranet__redirect__detector.h
rename to devel/electron12/files/patch-chrome_browser_intranet__redirect__detector.h
diff --git a/devel/electron11/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc b/devel/electron12/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc
similarity index 76%
rename from devel/electron11/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc
rename to devel/electron12/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc
index 71385ae9619512bbe6fde9f70e5e9e04b5c99ccc..2d96b409c7f77259fd73ef7a9eb4a076396f2d46 100644
--- a/devel/electron11/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc
+++ b/devel/electron12/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc
@@ -1,4 +1,4 @@
---- chrome/browser/media_galleries/fileapi/mtp_device_map_service.cc.orig	2021-01-07 00:36:23 UTC
+--- chrome/browser/media_galleries/fileapi/mtp_device_map_service.cc.orig	2021-04-14 01:08:40 UTC
 +++ chrome/browser/media_galleries/fileapi/mtp_device_map_service.cc
 @@ -39,10 +39,12 @@ void MTPDeviceMapService::RegisterMTPFileSystem(
      // Note that this initializes the delegate asynchronously, but since
@@ -7,8 +7,8 @@
 +#if !defined(OS_FREEBSD)
      CreateMTPDeviceAsyncDelegate(
          device_location, read_only,
-         base::Bind(&MTPDeviceMapService::AddAsyncDelegate,
-                    base::Unretained(this), device_location, read_only));
+         base::BindOnce(&MTPDeviceMapService::AddAsyncDelegate,
+                        base::Unretained(this), device_location, read_only));
 +#endif
      mtp_device_usage_map_[key] = 0;
    }
diff --git a/devel/electron11/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc b/devel/electron12/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc
similarity index 87%
rename from devel/electron11/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc
rename to devel/electron12/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc
index 8feb8ea78127306acfe41158141a168d247c77ab..c3b9a3b3b1993fecaf1baa4fa1f07c0cc06d83fe 100644
--- a/devel/electron11/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc
+++ b/devel/electron12/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc
@@ -1,6 +1,6 @@
---- chrome/browser/media_galleries/media_file_system_registry.cc.orig	2021-01-07 00:36:23 UTC
+--- chrome/browser/media_galleries/media_file_system_registry.cc.orig	2021-04-14 01:08:40 UTC
 +++ chrome/browser/media_galleries/media_file_system_registry.cc
-@@ -735,7 +735,10 @@ class MediaFileSystemRegistry::MediaFileSystemContextI
+@@ -736,7 +736,10 @@ class MediaFileSystemRegistry::MediaFileSystemContextI
  // Constructor in 'private' section because depends on private class definition.
  MediaFileSystemRegistry::MediaFileSystemRegistry()
      : file_system_context_(new MediaFileSystemContextImpl) {
diff --git a/devel/electron12/files/patch-chrome_browser_media_audio__service__util.cc b/devel/electron12/files/patch-chrome_browser_media_audio__service__util.cc
new file mode 100644
index 0000000000000000000000000000000000000000..699c8bc17dc5006fea3da2e6c050edaa6728776f
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_media_audio__service__util.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/media/audio_service_util.cc.orig	2021-04-14 01:08:40 UTC
++++ chrome/browser/media/audio_service_util.cc
+@@ -24,7 +24,7 @@ bool IsAudioServiceSandboxEnabled() {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+ #if defined(OS_WIN) || defined(OS_MAC) || \
+-    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+   const policy::PolicyMap& policies =
+       g_browser_process->browser_policy_connector()
+           ->GetPolicyService()
diff --git a/devel/electron11/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc b/devel/electron12/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc
rename to devel/electron12/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc
diff --git a/devel/electron11/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc b/devel/electron12/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc
rename to devel/electron12/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc
diff --git a/devel/electron11/files/patch-chrome_browser_media_router_providers_wired__display_wired__display__media__route__provider.cc b/devel/electron12/files/patch-chrome_browser_media_router_providers_wired__display_wired__display__media__route__provider.cc
similarity index 81%
rename from devel/electron11/files/patch-chrome_browser_media_router_providers_wired__display_wired__display__media__route__provider.cc
rename to devel/electron12/files/patch-chrome_browser_media_router_providers_wired__display_wired__display__media__route__provider.cc
index fe77a82283cdb1abb1b4a5a8d8d9b3adf19e265c..e5dd1a7c745b5a7cef3686839b9f1960b4ba3f20 100644
--- a/devel/electron11/files/patch-chrome_browser_media_router_providers_wired__display_wired__display__media__route__provider.cc
+++ b/devel/electron12/files/patch-chrome_browser_media_router_providers_wired__display_wired__display__media__route__provider.cc
@@ -1,6 +1,6 @@
---- chrome/browser/media/router/providers/wired_display/wired_display_media_route_provider.cc.orig	2021-01-07 00:36:23 UTC
+--- chrome/browser/media/router/providers/wired_display/wired_display_media_route_provider.cc.orig	2021-04-14 01:08:40 UTC
 +++ chrome/browser/media/router/providers/wired_display/wired_display_media_route_provider.cc
-@@ -112,6 +112,12 @@ void WiredDisplayMediaRouteProvider::CreateRoute(
+@@ -105,6 +105,12 @@ void WiredDisplayMediaRouteProvider::CreateRoute(
      bool off_the_record,
      CreateRouteCallback callback) {
    DCHECK(!base::Contains(presentations_, presentation_id));
@@ -13,7 +13,7 @@
    base::Optional<Display> display = GetDisplayBySinkId(sink_id);
    if (!display) {
      std::move(callback).Run(base::nullopt, nullptr,
-@@ -138,6 +144,7 @@ void WiredDisplayMediaRouteProvider::CreateRoute(
+@@ -131,6 +137,7 @@ void WiredDisplayMediaRouteProvider::CreateRoute(
    std::move(callback).Run(route, nullptr, base::nullopt,
                            RouteRequestResult::OK);
    NotifyRouteObservers();
diff --git a/devel/electron11/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc b/devel/electron12/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc
similarity index 71%
rename from devel/electron11/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc
rename to devel/electron12/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc
index a3b364d99e056cb809b59709e29bde046e92740d..5780399dc7ed2df644bea42ed547c871283303c3 100644
--- a/devel/electron11/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc
+++ b/devel/electron12/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc
@@ -1,8 +1,8 @@
---- chrome/browser/media/webrtc/webrtc_event_log_uploader.cc.orig	2021-01-07 00:36:23 UTC
+--- chrome/browser/media/webrtc/webrtc_event_log_uploader.cc.orig	2021-04-14 01:08:40 UTC
 +++ chrome/browser/media/webrtc/webrtc_event_log_uploader.cc
-@@ -40,6 +40,8 @@ const char kProduct[] = "Chrome_Mac";
+@@ -41,6 +41,8 @@ const char kProduct[] = "Chrome_Mac";
  const char kProduct[] = "Chrome_ChromeOS";
- #elif defined(OS_LINUX)
+ #elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
  const char kProduct[] = "Chrome_Linux";
 +#elif defined(OS_FREEBSD)
 +const char kProduct[] = "Chrome_FreeBSD";
diff --git a/devel/electron11/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc b/devel/electron12/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc
similarity index 74%
rename from devel/electron11/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc
rename to devel/electron12/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc
index 9bc13c262692520c3bd5851b07369c9e6055bb1f..ce227ff5f3a8d913f29f1434a83f374b71b2470f 100644
--- a/devel/electron11/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc
+++ b/devel/electron12/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc
@@ -1,8 +1,8 @@
---- chrome/browser/media/webrtc/webrtc_log_uploader.cc.orig	2021-01-07 00:36:23 UTC
+--- chrome/browser/media/webrtc/webrtc_log_uploader.cc.orig	2021-04-14 01:08:40 UTC
 +++ chrome/browser/media/webrtc/webrtc_log_uploader.cc
-@@ -357,6 +357,8 @@ void WebRtcLogUploader::SetupMultipart(
+@@ -360,6 +360,8 @@ void WebRtcLogUploader::SetupMultipart(
    const char product[] = "Chrome_Android";
- #elif defined(OS_CHROMEOS)
+ #elif BUILDFLAG(IS_CHROMEOS_ASH)
    const char product[] = "Chrome_ChromeOS";
 +#elif defined(OS_FREEBSD)
 +  const char product[] = "Chrome_FreeBSD";
diff --git a/devel/electron11/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.cc b/devel/electron12/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.cc
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.cc
rename to devel/electron12/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.cc
diff --git a/devel/electron11/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.h b/devel/electron12/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.h
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.h
rename to devel/electron12/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.h
diff --git a/devel/electron11/files/patch-chrome_browser_memory__details.cc b/devel/electron12/files/patch-chrome_browser_memory__details.cc
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_memory__details.cc
rename to devel/electron12/files/patch-chrome_browser_memory__details.cc
diff --git a/devel/electron11/files/patch-chrome_browser_memory__details__linux.cc b/devel/electron12/files/patch-chrome_browser_memory__details__linux.cc
similarity index 72%
rename from devel/electron11/files/patch-chrome_browser_memory__details__linux.cc
rename to devel/electron12/files/patch-chrome_browser_memory__details__linux.cc
index 7c3bb2de2b54b9174315109e850a62ee2a26fa84..63d2398739c9df6df39f08383ba4dabe9dff1a5e 100644
--- a/devel/electron11/files/patch-chrome_browser_memory__details__linux.cc
+++ b/devel/electron12/files/patch-chrome_browser_memory__details__linux.cc
@@ -1,6 +1,6 @@
---- chrome/browser/memory_details_linux.cc.orig	2021-01-07 00:36:23 UTC
+--- chrome/browser/memory_details_linux.cc.orig	2021-04-14 01:08:40 UTC
 +++ chrome/browser/memory_details_linux.cc
-@@ -69,8 +69,10 @@ ProcessData GetProcessDataMemoryInformation(
+@@ -70,8 +70,10 @@ ProcessData GetProcessDataMemoryInformation(
  
      std::unique_ptr<base::ProcessMetrics> metrics(
          base::ProcessMetrics::CreateProcessMetrics(pid));
diff --git a/devel/electron11/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc b/devel/electron12/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc
similarity index 63%
rename from devel/electron11/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc
rename to devel/electron12/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc
index e36b22171792277266a015186d05c3aa10846df0..3232eb557325ff72cc6b288a590ecfcaadf9bb25 100644
--- a/devel/electron11/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc
+++ b/devel/electron12/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc
@@ -1,8 +1,8 @@
---- chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc.orig	2021-01-07 00:36:23 UTC
+--- chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc.orig	2021-04-14 01:08:40 UTC
 +++ chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc
-@@ -50,7 +50,9 @@
- 
- #if defined(OS_LINUX) && !defined(OS_CHROMEOS)
+@@ -56,7 +56,9 @@
+ // of lacros-chrome is complete.
+ #if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
  #include <gnu/libc-version.h>
 +#endif
  
@@ -10,12 +10,12 @@
  #include "base/linux_util.h"
  #include "base/strings/string_split.h"
  #include "base/strings/string_util.h"
-@@ -59,7 +61,7 @@
+@@ -65,7 +67,7 @@
  #include "ui/base/ui_base_features.h"
  #include "ui/base/x/x11_util.h"
  #endif
--#endif  // defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#endif  // defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#endif  // defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
  
  #if defined(USE_OZONE) || defined(USE_X11)
  #include "ui/events/devices/device_data_manager.h"
diff --git a/devel/electron12/files/patch-chrome_browser_metrics_chrome__metrics__service__client.cc b/devel/electron12/files/patch-chrome_browser_metrics_chrome__metrics__service__client.cc
new file mode 100644
index 0000000000000000000000000000000000000000..4bd23f5270c2503e483351e13ba4a7ae1455f0ac
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_metrics_chrome__metrics__service__client.cc
@@ -0,0 +1,24 @@
+--- chrome/browser/metrics/chrome_metrics_service_client.cc.orig	2021-04-14 01:08:40 UTC
++++ chrome/browser/metrics/chrome_metrics_service_client.cc
+@@ -697,10 +697,10 @@ void ChromeMetricsServiceClient::RegisterMetricsServic
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+ #if defined(OS_WIN) || defined(OS_MAC) || \
+-    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+   metrics_service_->RegisterMetricsProvider(
+       std::make_unique<DesktopPlatformFeaturesMetricsProvider>());
+-#endif  // defined(OS_WIN) || defined(OS_MAC) || (defined(OS_LINUX) ||
++#endif  // defined(OS_WIN) || defined(OS_MAC) || (defined(OS_LINUX) || defined(OS_BSD) ||
+         // BUILDFLAG(IS_CHROMEOS_LACROS))
+ 
+ #if BUILDFLAG(ENABLE_PLUGINS)
+@@ -978,7 +978,7 @@ bool ChromeMetricsServiceClient::RegisterForProfileEve
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+ #if defined(OS_WIN) || defined(OS_MAC) || \
+-    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+   // This creates the DesktopProfileSessionDurationsServices if it didn't exist
+   // already.
+   metrics::DesktopProfileSessionDurationsServiceFactory::GetForBrowserContext(
diff --git a/devel/electron11/files/patch-chrome_browser_metrics_process__memory__metrics__emitter.cc b/devel/electron12/files/patch-chrome_browser_metrics_process__memory__metrics__emitter.cc
similarity index 88%
rename from devel/electron11/files/patch-chrome_browser_metrics_process__memory__metrics__emitter.cc
rename to devel/electron12/files/patch-chrome_browser_metrics_process__memory__metrics__emitter.cc
index 9157a6b5e637aaa3ced25f9635bb69be5af126c1..07bd125b8489e585cd99ee18a81cb49c2fac443c 100644
--- a/devel/electron11/files/patch-chrome_browser_metrics_process__memory__metrics__emitter.cc
+++ b/devel/electron12/files/patch-chrome_browser_metrics_process__memory__metrics__emitter.cc
@@ -1,6 +1,6 @@
---- chrome/browser/metrics/process_memory_metrics_emitter.cc.orig	2021-01-07 00:36:23 UTC
+--- chrome/browser/metrics/process_memory_metrics_emitter.cc.orig	2021-04-14 01:08:40 UTC
 +++ chrome/browser/metrics/process_memory_metrics_emitter.cc
-@@ -496,7 +496,7 @@ void EmitProcessUmaAndUkm(const GlobalMemoryDump::Proc
+@@ -509,7 +509,7 @@ void EmitProcessUmaAndUkm(const GlobalMemoryDump::Proc
  
    builder->SetPrivateMemoryFootprint(pmd.os_dump().private_footprint_kb / kKiB);
    builder->SetSharedMemoryFootprint(pmd.os_dump().shared_footprint_kb / kKiB);
@@ -9,7 +9,7 @@
    builder->SetPrivateSwapFootprint(pmd.os_dump().private_footprint_swap_kb /
                                     kKiB);
  #endif
-@@ -519,7 +519,7 @@ void EmitProcessUmaAndUkm(const GlobalMemoryDump::Proc
+@@ -532,7 +532,7 @@ void EmitProcessUmaAndUkm(const GlobalMemoryDump::Proc
    MEMORY_METRICS_HISTOGRAM_MB(std::string(kMemoryHistogramPrefix) +
                                    process_name + ".SharedMemoryFootprint",
                                pmd.os_dump().shared_footprint_kb / kKiB);
diff --git a/devel/electron11/files/patch-chrome_browser_net_system__network__context__manager.cc b/devel/electron12/files/patch-chrome_browser_net_system__network__context__manager.cc
similarity index 66%
rename from devel/electron11/files/patch-chrome_browser_net_system__network__context__manager.cc
rename to devel/electron12/files/patch-chrome_browser_net_system__network__context__manager.cc
index 424f1ecff12d1deb40e364c7664283631bf4a5f2..ced8b5e00f32a5531c483bd4970b19a8ceb31ae9 100644
--- a/devel/electron11/files/patch-chrome_browser_net_system__network__context__manager.cc
+++ b/devel/electron12/files/patch-chrome_browser_net_system__network__context__manager.cc
@@ -1,22 +1,22 @@
---- chrome/browser/net/system_network_context_manager.cc.orig	2021-01-07 00:36:23 UTC
+--- chrome/browser/net/system_network_context_manager.cc.orig	2021-04-14 01:08:40 UTC
 +++ chrome/browser/net/system_network_context_manager.cc
-@@ -77,11 +77,11 @@
- #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
- #endif  // defined(OS_CHROMEOS)
+@@ -81,11 +81,11 @@
  
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
  #include "chrome/common/chrome_paths_internal.h"
  #include "chrome/grit/chromium_strings.h"
  #include "ui/base/l10n/l10n_util.h"
--#endif  // defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#endif  // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#endif  // defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
  
  #if BUILDFLAG(ENABLE_EXTENSIONS)
  #include "extensions/common/constants.h"
-@@ -140,10 +140,10 @@ network::mojom::HttpAuthDynamicParamsPtr CreateHttpAut
-   auth_dynamic_params->enable_negotiate_port =
-       local_state->GetBoolean(prefs::kEnableAuthNegotiatePort);
+@@ -146,10 +146,10 @@ network::mojom::HttpAuthDynamicParamsPtr CreateHttpAut
+   auth_dynamic_params->basic_over_http_enabled =
+       local_state->GetBoolean(prefs::kBasicAuthOverHttpEnabled);
  
 -#if defined(OS_LINUX) || defined(OS_MAC) || defined(OS_CHROMEOS)
 +#if defined(OS_LINUX) || defined(OS_MAC) || defined(OS_CHROMEOS) || defined(OS_BSD)
@@ -27,8 +27,8 @@
  
  #if defined(OS_POSIX)
    auth_dynamic_params->ntlm_v2_enabled =
-@@ -356,10 +356,10 @@ SystemNetworkContextManager::SystemNetworkContextManag
-   pref_change_registrar_.Add(prefs::kEnableAuthNegotiatePort,
+@@ -364,10 +364,10 @@ SystemNetworkContextManager::SystemNetworkContextManag
+   pref_change_registrar_.Add(prefs::kBasicAuthOverHttpEnabled,
                               auth_pref_callback);
  
 -#if defined(OS_LINUX) || defined(OS_MAC) || defined(OS_CHROMEOS)
@@ -40,7 +40,7 @@
  
  #if defined(OS_POSIX)
    pref_change_registrar_.Add(prefs::kNtlmV2Enabled, auth_pref_callback);
-@@ -406,10 +406,10 @@ void SystemNetworkContextManager::RegisterPrefs(PrefRe
+@@ -416,10 +416,10 @@ void SystemNetworkContextManager::RegisterPrefs(PrefRe
    registry->RegisterStringPref(prefs::kAuthServerAllowlist, std::string());
    registry->RegisterStringPref(prefs::kAuthNegotiateDelegateAllowlist,
                                 std::string());
@@ -53,12 +53,12 @@
  
  #if defined(OS_POSIX)
    registry->RegisterBooleanPref(
-@@ -492,7 +492,7 @@ void SystemNetworkContextManager::OnNetworkServiceCrea
-   // NetworkContext is created, but before anything has the chance to use it.
-   stub_resolver_config_reader_.UpdateNetworkService(true /* record_metrics */);
+@@ -513,7 +513,7 @@ void SystemNetworkContextManager::OnNetworkServiceCrea
  
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) || defined(OS_BSD)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
    const base::CommandLine& command_line =
        *base::CommandLine::ForCurrentProcess();
  
diff --git a/devel/electron11/files/patch-chrome_browser_notifications_notification__display__service__impl.cc b/devel/electron12/files/patch-chrome_browser_notifications_notification__display__service__impl.cc
similarity index 71%
rename from devel/electron11/files/patch-chrome_browser_notifications_notification__display__service__impl.cc
rename to devel/electron12/files/patch-chrome_browser_notifications_notification__display__service__impl.cc
index ed5cb3e51a24dacd7f46e4fb359e742fcd051399..0c3fef6ccaa2fcb1e666083bf394439c9114cc00 100644
--- a/devel/electron11/files/patch-chrome_browser_notifications_notification__display__service__impl.cc
+++ b/devel/electron12/files/patch-chrome_browser_notifications_notification__display__service__impl.cc
@@ -1,6 +1,6 @@
---- chrome/browser/notifications/notification_display_service_impl.cc.orig	2021-01-07 00:36:23 UTC
+--- chrome/browser/notifications/notification_display_service_impl.cc.orig	2021-04-14 01:08:40 UTC
 +++ chrome/browser/notifications/notification_display_service_impl.cc
-@@ -29,7 +29,7 @@
+@@ -30,7 +30,7 @@
  #include "chrome/browser/extensions/api/notifications/extension_notification_handler.h"
  #endif
  
@@ -9,16 +9,16 @@
      defined(OS_WIN)
  #include "chrome/browser/send_tab_to_self/desktop_notification_handler.h"
  #include "chrome/browser/sharing/sharing_notification_handler.h"
-@@ -57,7 +57,7 @@ NotificationDisplayServiceImpl* NotificationDisplaySer
- // static
- void NotificationDisplayServiceImpl::RegisterProfilePrefs(
+@@ -66,7 +66,7 @@ void NotificationDisplayServiceImpl::RegisterProfilePr
      user_prefs::PrefRegistrySyncable* registry) {
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
    registry->RegisterBooleanPref(prefs::kAllowNativeNotifications, true);
  #endif
  }
-@@ -72,7 +72,7 @@ NotificationDisplayServiceImpl::NotificationDisplaySer
+@@ -81,7 +81,7 @@ NotificationDisplayServiceImpl::NotificationDisplaySer
      AddNotificationHandler(NotificationHandler::Type::WEB_PERSISTENT,
                             std::make_unique<PersistentNotificationHandler>());
  
diff --git a/devel/electron12/files/patch-chrome_browser_notifications_notification__platform__bridge__delegator.cc b/devel/electron12/files/patch-chrome_browser_notifications_notification__platform__bridge__delegator.cc
new file mode 100644
index 0000000000000000000000000000000000000000..1f3464d44a3638b53058c6a7d038e792091def9c
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_notifications_notification__platform__bridge__delegator.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/notifications/notification_platform_bridge_delegator.cc.orig	2021-04-14 01:08:40 UTC
++++ chrome/browser/notifications/notification_platform_bridge_delegator.cc
+@@ -56,7 +56,7 @@ bool NativeNotificationsEnabled(Profile* profile) {
+   return true;
+ #elif defined(OS_WIN)
+   return NotificationPlatformBridgeWin::NativeNotificationEnabled();
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   if (profile) {
+     // Prefs take precedence over flags.
+     PrefService* prefs = profile->GetPrefs();
diff --git a/devel/electron12/files/patch-chrome_browser_password__manager_chrome__password__manager__client.cc b/devel/electron12/files/patch-chrome_browser_password__manager_chrome__password__manager__client.cc
new file mode 100644
index 0000000000000000000000000000000000000000..04bcc9471d271a821c3c0fb96d82c5d471ac54f3
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_password__manager_chrome__password__manager__client.cc
@@ -0,0 +1,26 @@
+--- chrome/browser/password_manager/chrome_password_manager_client.cc.orig	2021-04-14 01:08:40 UTC
++++ chrome/browser/password_manager/chrome_password_manager_client.cc
+@@ -9,6 +9,10 @@
+ #include <string>
+ #include <utility>
+ 
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#endif
++
+ #include "base/bind.h"
+ #include "base/callback_helpers.h"
+ #include "base/command_line.h"
+@@ -101,8 +105,11 @@
+ #include "net/cert/cert_status_flags.h"
+ #include "services/metrics/public/cpp/ukm_recorder.h"
+ #include "services/network/public/cpp/is_potentially_trustworthy.h"
+-#include "third_party/re2/src/re2/re2.h"
+ #include "url/url_constants.h"
++
++#if !defined(OS_BSD)
++#include "third_party/re2/src/re2/re2.h"
++#endif
+ 
+ #if BUILDFLAG(FULL_SAFE_BROWSING)
+ #include "chrome/browser/safe_browsing/advanced_protection_status_manager.h"
diff --git a/devel/electron11/files/patch-chrome_browser_password__manager_password__store__factory.cc b/devel/electron12/files/patch-chrome_browser_password__manager_password__store__factory.cc
similarity index 53%
rename from devel/electron11/files/patch-chrome_browser_password__manager_password__store__factory.cc
rename to devel/electron12/files/patch-chrome_browser_password__manager_password__store__factory.cc
index 2c9622caed79624d534079c387c76a16d24a722a..d8f91fa5abb41d415770032f1b6d7bb63b14cc3a 100644
--- a/devel/electron11/files/patch-chrome_browser_password__manager_password__store__factory.cc
+++ b/devel/electron12/files/patch-chrome_browser_password__manager_password__store__factory.cc
@@ -1,11 +1,11 @@
---- chrome/browser/password_manager/password_store_factory.cc.orig	2021-01-07 00:36:23 UTC
+--- chrome/browser/password_manager/password_store_factory.cc.orig	2021-04-14 01:08:40 UTC
 +++ chrome/browser/password_manager/password_store_factory.cc
-@@ -188,7 +188,7 @@ PasswordStoreFactory::BuildServiceInstanceFor(
-                                                   network_context_getter);
- 
+@@ -163,7 +163,7 @@ PasswordStoreFactory::BuildServiceInstanceFor(
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
  #if defined(OS_WIN) || defined(OS_MAC) || \
--    (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+-    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
    std::unique_ptr<password_manager::PasswordStoreSigninNotifier> notifier =
        std::make_unique<password_manager::PasswordStoreSigninNotifierImpl>(
            IdentityManagerFactory::GetForProfile(profile));
diff --git a/devel/electron12/files/patch-chrome_browser_pdf_pdf__extension__test.cc b/devel/electron12/files/patch-chrome_browser_pdf_pdf__extension__test.cc
new file mode 100644
index 0000000000000000000000000000000000000000..b2ac599df5d8f7ee637214b964d6ba66d4a16a55
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_pdf_pdf__extension__test.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/pdf/pdf_extension_test.cc.orig	2021-04-14 01:08:40 UTC
++++ chrome/browser/pdf/pdf_extension_test.cc
+@@ -2188,7 +2188,7 @@ class PDFExtensionClipboardTest : public PDFExtensionT
+                                           const std::string& expected) {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+     DoActionAndCheckClipboard(std::move(action),
+                               ui::ClipboardBuffer::kSelection, expected);
+ #else
+@@ -2320,7 +2320,7 @@ IN_PROC_BROWSER_TEST_P(PDFExtensionClipboardTest,
+ // Flaky on ChromeOS (https://crbug.com/1121446)
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #define MAYBE_CombinedShiftArrowPresses DISABLED_CombinedShiftArrowPresses
+ #else
+ #define MAYBE_CombinedShiftArrowPresses CombinedShiftArrowPresses
diff --git a/devel/electron12/files/patch-chrome_browser_performance__manager_policies_policy__features.cc b/devel/electron12/files/patch-chrome_browser_performance__manager_policies_policy__features.cc
new file mode 100644
index 0000000000000000000000000000000000000000..f80c64ca4169b81c57e7d591be781f51bf62932c
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_performance__manager_policies_policy__features.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/performance_manager/policies/policy_features.cc.orig	2021-04-14 01:08:40 UTC
++++ chrome/browser/performance_manager/policies/policy_features.cc
+@@ -125,7 +125,7 @@ const base::Feature kPageFreezingFromPerformanceManage
+ 
+ const base::Feature kUrgentDiscardingFromPerformanceManager{
+   "UrgentDiscardingFromPerformanceManager",
+-#if BUILDFLAG(IS_CHROMEOS_ASH) || defined(OS_LINUX)
++#if BUILDFLAG(IS_CHROMEOS_ASH) || defined(OS_LINUX) || defined(OS_BSD)
+       base::FEATURE_DISABLED_BY_DEFAULT
+ #else
+       base::FEATURE_ENABLED_BY_DEFAULT
diff --git a/devel/electron11/files/patch-chrome_browser_performance__monitor_process__metrics__history.cc b/devel/electron12/files/patch-chrome_browser_performance__monitor_process__metrics__history.cc
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_performance__monitor_process__metrics__history.cc
rename to devel/electron12/files/patch-chrome_browser_performance__monitor_process__metrics__history.cc
diff --git a/devel/electron11/files/patch-chrome_browser_performance__monitor_process__metrics__history.h b/devel/electron12/files/patch-chrome_browser_performance__monitor_process__metrics__history.h
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_performance__monitor_process__metrics__history.h
rename to devel/electron12/files/patch-chrome_browser_performance__monitor_process__metrics__history.h
diff --git a/devel/electron11/files/patch-chrome_browser_plugins_plugin__info__host__impl.cc b/devel/electron12/files/patch-chrome_browser_plugins_plugin__info__host__impl.cc
similarity index 77%
rename from devel/electron11/files/patch-chrome_browser_plugins_plugin__info__host__impl.cc
rename to devel/electron12/files/patch-chrome_browser_plugins_plugin__info__host__impl.cc
index 008920ef51174cb28e2842dd639b929a3ae6306c..ce6a49c7c9a0996af69a27ec7b9ec3714407d941 100644
--- a/devel/electron11/files/patch-chrome_browser_plugins_plugin__info__host__impl.cc
+++ b/devel/electron12/files/patch-chrome_browser_plugins_plugin__info__host__impl.cc
@@ -1,6 +1,6 @@
---- chrome/browser/plugins/plugin_info_host_impl.cc.orig	2021-01-07 00:36:23 UTC
+--- chrome/browser/plugins/plugin_info_host_impl.cc.orig	2021-04-14 01:08:40 UTC
 +++ chrome/browser/plugins/plugin_info_host_impl.cc
-@@ -391,7 +391,7 @@ void PluginInfoHostImpl::ComponentPluginLookupDone(
+@@ -379,7 +379,7 @@ void PluginInfoHostImpl::ComponentPluginLookupDone(
      std::unique_ptr<component_updater::ComponentInfo> cus_plugin_info) {
    if (cus_plugin_info) {
      output->status = chrome::mojom::PluginStatus::kComponentUpdateRequired;
diff --git a/devel/electron11/files/patch-chrome_browser_plugins_plugins__resource__service.cc b/devel/electron12/files/patch-chrome_browser_plugins_plugins__resource__service.cc
similarity index 63%
rename from devel/electron11/files/patch-chrome_browser_plugins_plugins__resource__service.cc
rename to devel/electron12/files/patch-chrome_browser_plugins_plugins__resource__service.cc
index 2523882729b08c3eef66cbfc7442a135363ff166..6b6e50c810dee9a525b1948fbe952a77cd2b2f63 100644
--- a/devel/electron11/files/patch-chrome_browser_plugins_plugins__resource__service.cc
+++ b/devel/electron12/files/patch-chrome_browser_plugins_plugins__resource__service.cc
@@ -1,11 +1,11 @@
---- chrome/browser/plugins/plugins_resource_service.cc.orig	2021-01-07 00:36:23 UTC
+--- chrome/browser/plugins/plugins_resource_service.cc.orig	2021-04-14 01:08:40 UTC
 +++ chrome/browser/plugins/plugins_resource_service.cc
 @@ -62,7 +62,7 @@ GURL GetPluginsServerURL() {
    filename = "plugins_win.json";
- #elif defined(OS_CHROMEOS)
+ #elif BUILDFLAG(IS_CHROMEOS_ASH)
    filename = "plugins_chromeos.json";
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
    filename = "plugins_linux.json";
  #elif defined(OS_MAC)
    filename = "plugins_mac.json";
diff --git a/devel/electron11/files/patch-chrome_browser_policy_browser__signin__policy__handler.cc b/devel/electron12/files/patch-chrome_browser_policy_browser__signin__policy__handler.cc
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_policy_browser__signin__policy__handler.cc
rename to devel/electron12/files/patch-chrome_browser_policy_browser__signin__policy__handler.cc
diff --git a/devel/electron11/files/patch-chrome_browser_policy_chrome__browser__cloud__management__controller__desktop.cc b/devel/electron12/files/patch-chrome_browser_policy_chrome__browser__cloud__management__controller__desktop.cc
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_policy_chrome__browser__cloud__management__controller__desktop.cc
rename to devel/electron12/files/patch-chrome_browser_policy_chrome__browser__cloud__management__controller__desktop.cc
diff --git a/devel/electron11/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc b/devel/electron12/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc
similarity index 50%
rename from devel/electron11/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc
rename to devel/electron12/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc
index e448ae4639b0932145d91a711643836d81c8c080..0c815edeb9f8d775229806cdcf95825961457d43 100644
--- a/devel/electron11/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc
+++ b/devel/electron12/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc
@@ -1,30 +1,30 @@
---- chrome/browser/policy/configuration_policy_handler_list_factory.cc.orig	2021-01-07 00:36:23 UTC
+--- chrome/browser/policy/configuration_policy_handler_list_factory.cc.orig	2021-04-14 01:08:40 UTC
 +++ chrome/browser/policy/configuration_policy_handler_list_factory.cc
-@@ -1248,11 +1248,11 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] = 
+@@ -1233,11 +1233,11 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] = 
      base::Value::Type::BOOLEAN },
- #endif  // !defined(OS_MAC) && !defined(OS_CHROMEOS)
+ #endif // !defined(OS_MAC) && !BUILDFLAG(IS_CHROMEOS_ASH)
  
 -#if defined(OS_LINUX) || defined(OS_MAC) || defined(OS_CHROMEOS)
 +#if defined(OS_LINUX) || defined(OS_MAC) || defined(OS_CHROMEOS) || defined(OS_BSD)
    { key::kAuthNegotiateDelegateByKdcPolicy,
      prefs::kAuthNegotiateDelegateByKdcPolicy,
      base::Value::Type::BOOLEAN },
--#endif  // defined(OS_LINUX) || defined(OS_MAC) || defined(OS_CHROMEOS)
-+#endif  // defined(OS_LINUX) || defined(OS_MAC) || defined(OS_CHROMEOS) || defined(OS_BSD)
+-#endif // defined(OS_LINUX) || defined(OS_MAC) || defined(OS_CHROMEOS)
++#endif // defined(OS_LINUX) || defined(OS_MAC) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
  #if !defined(OS_MAC)
    { key::kFullscreenAllowed,
-@@ -1302,11 +1302,11 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] = 
-     base::Value::Type::BOOLEAN },
+@@ -1282,11 +1282,11 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] = 
  #endif  // BUILDFLAG(ENABLE_SPELLCHECK)
  
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
    { key::kAllowNativeNotifications,
      prefs::kAllowNativeNotifications,
      base::Value::Type::BOOLEAN },
--#endif  // defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#endif  // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+-#endif // defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#endif // defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || deined(OS_BSD)
  
    { key::kScrollToTextFragmentEnabled,
      prefs::kScrollToTextFragmentEnabled,
diff --git a/devel/electron11/files/patch-chrome_browser_policy_device__management__service__configuration.cc b/devel/electron12/files/patch-chrome_browser_policy_device__management__service__configuration.cc
similarity index 67%
rename from devel/electron11/files/patch-chrome_browser_policy_device__management__service__configuration.cc
rename to devel/electron12/files/patch-chrome_browser_policy_device__management__service__configuration.cc
index 70e4d668c6f9f8f9f1792574348af585c173c23d..c800b14e99c52801e256f3e74c7a8dce92b90e39 100644
--- a/devel/electron11/files/patch-chrome_browser_policy_device__management__service__configuration.cc
+++ b/devel/electron12/files/patch-chrome_browser_policy_device__management__service__configuration.cc
@@ -1,20 +1,20 @@
---- chrome/browser/policy/device_management_service_configuration.cc.orig	2021-01-07 00:36:23 UTC
+--- chrome/browser/policy/device_management_service_configuration.cc.orig	2021-04-14 01:08:40 UTC
 +++ chrome/browser/policy/device_management_service_configuration.cc
-@@ -18,7 +18,7 @@
+@@ -20,7 +20,7 @@
  #endif
  
  #if defined(OS_WIN) || defined(OS_MAC) || \
 -    ((defined(OS_LINUX) || defined(OS_CHROMEOS)) && !defined(OS_ANDROID))
 +    ((defined(OS_LINUX) || defined(OS_CHROMEOS)) && !defined(OS_ANDROID)) || defined(OS_BSD)
  #include "chrome/browser/enterprise/connectors/common.h"
- #include "chrome/browser/enterprise/connectors/connectors_manager.h"
+ #include "chrome/browser/enterprise/connectors/connectors_service.h"
  #endif
-@@ -86,7 +86,7 @@ std::string DeviceManagementServiceConfiguration::GetR
- std::string
- DeviceManagementServiceConfiguration::GetReportingConnectorServerUrl() {
+@@ -98,7 +98,7 @@ std::string
+ DeviceManagementServiceConfiguration::GetReportingConnectorServerUrl(
+     content::BrowserContext* context) {
  #if defined(OS_WIN) || defined(OS_MAC) || \
 -    ((defined(OS_LINUX) || defined(OS_CHROMEOS)) && !defined(OS_ANDROID))
 +    ((defined(OS_LINUX) || defined(OS_CHROMEOS)) && !defined(OS_ANDROID)) || defined(OS_BSD)
-   auto settings =
-       enterprise_connectors::ConnectorsManager::GetInstance()
-           ->GetReportingSettings(
+   auto* service =
+       enterprise_connectors::ConnectorsServiceFactory::GetForBrowserContext(
+           context);
diff --git a/devel/electron12/files/patch-chrome_browser_prefs_browser__prefs.cc b/devel/electron12/files/patch-chrome_browser_prefs_browser__prefs.cc
new file mode 100644
index 0000000000000000000000000000000000000000..f758365655e39e61345b037ce4727371578f4f7e
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_prefs_browser__prefs.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/prefs/browser_prefs.cc.orig	2021-04-14 01:08:40 UTC
++++ chrome/browser/prefs/browser_prefs.cc
+@@ -388,7 +388,7 @@
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+ #if defined(OS_WIN) || defined(OS_MAC) || \
+-    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+ #include "chrome/browser/browser_switcher/browser_switcher_prefs.h"
+ #endif
+ 
+@@ -1080,7 +1080,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySync
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+ #if defined(OS_WIN) || defined(OS_MAC) || \
+-    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+   browser_switcher::BrowserSwitcherPrefs::RegisterProfilePrefs(registry);
+ #endif
+ 
diff --git a/devel/electron12/files/patch-chrome_browser_prefs_pref__service__incognito__allowlist.cc b/devel/electron12/files/patch-chrome_browser_prefs_pref__service__incognito__allowlist.cc
new file mode 100644
index 0000000000000000000000000000000000000000..b53a909b814a4994e3332bc30bfea129077d1152
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_prefs_pref__service__incognito__allowlist.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/prefs/pref_service_incognito_allowlist.cc.orig	2021-04-14 01:08:40 UTC
++++ chrome/browser/prefs/pref_service_incognito_allowlist.cc
+@@ -136,7 +136,7 @@ const char* const kPersistentPrefNames[] = {
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+     // Toggleing custom frames affects all open windows in the profile, hence
+     // should be written to the regular profile when changed in incognito mode.
+     prefs::kUseCustomChromeFrame,
diff --git a/devel/electron12/files/patch-chrome_browser_printing_print__job__worker.cc b/devel/electron12/files/patch-chrome_browser_printing_print__job__worker.cc
new file mode 100644
index 0000000000000000000000000000000000000000..0c7a169dcd45c4a4e0448694f191fbdabe450133
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_printing_print__job__worker.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/printing/print_job_worker.cc.orig	2021-04-22 07:51:50 UTC
++++ chrome/browser/printing/print_job_worker.cc
+@@ -224,7 +224,7 @@ void PrintJobWorker::UpdatePrintSettings(base::Value n
+     crash_key = std::make_unique<crash_keys::ScopedPrinterInfo>(
+         print_backend->GetPrinterDriverInfo(printer_name));
+ 
+-#if (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) && defined(USE_CUPS)
++#if (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)) && defined(USE_CUPS)
+     PrinterBasicInfo basic_info;
+     if (print_backend->GetPrinterBasicInfo(printer_name, &basic_info)) {
+       base::Value advanced_settings(base::Value::Type::DICTIONARY);
+@@ -234,7 +234,7 @@ void PrintJobWorker::UpdatePrintSettings(base::Value n
+       new_settings.SetKey(kSettingAdvancedSettings,
+                           std::move(advanced_settings));
+     }
+-#endif  // (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) &&
++#endif  // (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)) &&
+         // defined(USE_CUPS)
+   }
+ 
diff --git a/devel/electron11/files/patch-chrome_browser_process__singleton__posix.cc b/devel/electron12/files/patch-chrome_browser_process__singleton__posix.cc
similarity index 60%
rename from devel/electron11/files/patch-chrome_browser_process__singleton__posix.cc
rename to devel/electron12/files/patch-chrome_browser_process__singleton__posix.cc
index b18ad689f36d6d3a1eed1764d44e303b1f93cb21..e43ffe96b5227863c9abac17514a87476ee90095 100644
--- a/devel/electron11/files/patch-chrome_browser_process__singleton__posix.cc
+++ b/devel/electron12/files/patch-chrome_browser_process__singleton__posix.cc
@@ -1,6 +1,6 @@
---- chrome/browser/process_singleton_posix.cc.orig	2021-01-07 00:36:23 UTC
+--- chrome/browser/process_singleton_posix.cc.orig	2021-04-14 01:08:40 UTC
 +++ chrome/browser/process_singleton_posix.cc
-@@ -94,11 +94,11 @@
+@@ -95,12 +95,12 @@
  #include "net/base/network_interfaces.h"
  #include "ui/base/l10n/l10n_util.h"
  
@@ -9,12 +9,13 @@
  #include "chrome/browser/ui/process_singleton_dialog_linux.h"
  #endif
  
--#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if defined(TOOLKIT_VIEWS) && (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #if defined(TOOLKIT_VIEWS) && \
+-    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
  #include "ui/views/linux_ui/linux_ui.h"
  #endif
  
-@@ -295,7 +295,7 @@ bool DisplayProfileInUseError(const base::FilePath& lo
+@@ -297,7 +297,7 @@ bool DisplayProfileInUseError(const base::FilePath& lo
    if (g_disable_prompt)
      return g_user_opted_unlock_in_use_profile;
  
@@ -23,12 +24,12 @@
    base::string16 relaunch_button_text = l10n_util::GetStringUTF16(
        IDS_PROFILE_IN_USE_LINUX_RELAUNCH);
    return ShowProcessSingletonDialog(error, relaunch_button_text);
-@@ -871,7 +871,7 @@ ProcessSingleton::NotifyResult ProcessSingleton::Notif
-     SendRemoteProcessInteractionResultHistogram(REMOTE_PROCESS_SHUTTING_DOWN);
+@@ -874,7 +874,7 @@ ProcessSingleton::NotifyResult ProcessSingleton::Notif
      return PROCESS_NONE;
    } else if (strncmp(buf, kACKToken, base::size(kACKToken) - 1) == 0) {
--#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if defined(TOOLKIT_VIEWS) && (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #if defined(TOOLKIT_VIEWS) && \
+-    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
      // Likely NULL in unit tests.
      views::LinuxUI* linux_ui = views::LinuxUI::instance();
      if (linux_ui)
diff --git a/devel/electron12/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc b/devel/electron12/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc
new file mode 100644
index 0000000000000000000000000000000000000000..17b32b655fa3a64579cf567188e14058ba8017b4
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc.orig	2021-04-14 01:08:40 UTC
++++ chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
+@@ -337,7 +337,7 @@ void ChromeBrowserMainExtraPartsProfiles::
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+ #if defined(OS_WIN) || defined(OS_MAC) || \
+-    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+   metrics::DesktopProfileSessionDurationsServiceFactory::GetInstance();
+ #endif
+   ModelTypeStoreServiceFactory::GetInstance();
diff --git a/devel/electron12/files/patch-chrome_browser_profiles_profile.cc b/devel/electron12/files/patch-chrome_browser_profiles_profile.cc
new file mode 100644
index 0000000000000000000000000000000000000000..fd61bac6241a38d555c3054f281bb1437af43187
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_profiles_profile.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/profiles/profile.cc.orig	2021-04-14 01:08:40 UTC
++++ chrome/browser/profiles/profile.cc
+@@ -360,7 +360,7 @@ bool Profile::IsIncognitoProfile() const {
+ bool Profile::IsEphemeralGuestProfileEnabled() {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_WIN) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || \
++#if defined(OS_WIN) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD) || \
+     defined(OS_MAC)
+   return base::FeatureList::IsEnabled(
+       features::kEnableEphemeralGuestProfilesOnDesktop);
diff --git a/devel/electron11/files/patch-chrome_browser_profiles_profile__attributes__entry.cc b/devel/electron12/files/patch-chrome_browser_profiles_profile__attributes__entry.cc
similarity index 86%
rename from devel/electron11/files/patch-chrome_browser_profiles_profile__attributes__entry.cc
rename to devel/electron12/files/patch-chrome_browser_profiles_profile__attributes__entry.cc
index 9de8fb1c3371921e4e5057c2a65bc2b99e918333..ac16cd70e3f5ebf25612f5fed48fcbf6e01494c5 100644
--- a/devel/electron11/files/patch-chrome_browser_profiles_profile__attributes__entry.cc
+++ b/devel/electron12/files/patch-chrome_browser_profiles_profile__attributes__entry.cc
@@ -1,6 +1,6 @@
---- chrome/browser/profiles/profile_attributes_entry.cc.orig	2021-01-07 00:36:23 UTC
+--- chrome/browser/profiles/profile_attributes_entry.cc.orig	2021-04-14 01:08:40 UTC
 +++ chrome/browser/profiles/profile_attributes_entry.cc
-@@ -166,7 +166,7 @@ void ProfileAttributesEntry::Initialize(ProfileInfoCac
+@@ -159,7 +159,7 @@ void ProfileAttributesEntry::Initialize(ProfileInfoCac
    if (is_force_signin_enabled_) {
      if (!IsAuthenticated())
        is_force_signin_profile_locked_ = true;
diff --git a/devel/electron12/files/patch-chrome_browser_profiles_profiles__state.cc b/devel/electron12/files/patch-chrome_browser_profiles_profiles__state.cc
new file mode 100644
index 0000000000000000000000000000000000000000..5fbbd99377335072d2d9192943b7ad3757c64b94
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_profiles_profiles__state.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/profiles/profiles_state.cc.orig	2021-04-14 01:08:40 UTC
++++ chrome/browser/profiles/profiles_state.cc
+@@ -180,7 +180,7 @@ bool IsRegularOrGuestSession(Browser* browser) {
+ bool IsGuestModeRequested(const base::CommandLine& command_line,
+                           PrefService* local_state,
+                           bool show_warning) {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN) || \
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN) || defined(OS_BSD) || \
+     defined(OS_MAC)
+   DCHECK(local_state);
+ 
diff --git a/devel/electron11/files/patch-chrome_browser_renderer__context__menu_render__view__context__menu.cc b/devel/electron12/files/patch-chrome_browser_renderer__context__menu_render__view__context__menu.cc
similarity index 83%
rename from devel/electron11/files/patch-chrome_browser_renderer__context__menu_render__view__context__menu.cc
rename to devel/electron12/files/patch-chrome_browser_renderer__context__menu_render__view__context__menu.cc
index 88fa8f6a6b03008d49a2f8ac6ab09ab5254de92d..42475e95bf34e44e25df1687b77e9a951427ada1 100644
--- a/devel/electron11/files/patch-chrome_browser_renderer__context__menu_render__view__context__menu.cc
+++ b/devel/electron12/files/patch-chrome_browser_renderer__context__menu_render__view__context__menu.cc
@@ -1,6 +1,6 @@
---- chrome/browser/renderer_context_menu/render_view_context_menu.cc.orig	2021-01-07 00:36:23 UTC
+--- chrome/browser/renderer_context_menu/render_view_context_menu.cc.orig	2021-04-14 01:08:40 UTC
 +++ chrome/browser/renderer_context_menu/render_view_context_menu.cc
-@@ -2079,7 +2079,7 @@ bool RenderViewContextMenu::IsCommandIdEnabled(int id)
+@@ -2117,7 +2117,7 @@ bool RenderViewContextMenu::IsCommandIdEnabled(int id)
      case IDC_CHECK_SPELLING_WHILE_TYPING:
        return prefs->GetBoolean(spellcheck::prefs::kSpellCheckEnable);
  
diff --git a/devel/electron11/files/patch-chrome_browser_renderer__preferences__util.cc b/devel/electron12/files/patch-chrome_browser_renderer__preferences__util.cc
similarity index 55%
rename from devel/electron11/files/patch-chrome_browser_renderer__preferences__util.cc
rename to devel/electron12/files/patch-chrome_browser_renderer__preferences__util.cc
index b3540f60a785c24ed25e2ddfd9ae8beed619e009..0273fdf71ac53c44f26e050e11c75672f9e2ca29 100644
--- a/devel/electron11/files/patch-chrome_browser_renderer__preferences__util.cc
+++ b/devel/electron12/files/patch-chrome_browser_renderer__preferences__util.cc
@@ -1,24 +1,24 @@
---- chrome/browser/renderer_preferences_util.cc.orig	2021-01-07 00:36:23 UTC
+--- chrome/browser/renderer_preferences_util.cc.orig	2021-04-14 01:08:40 UTC
 +++ chrome/browser/renderer_preferences_util.cc
-@@ -34,7 +34,7 @@
+@@ -35,7 +35,7 @@
  #include "ui/base/cocoa/defaults_utils.h"
  #endif
  
--#if defined(USE_AURA) && defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if defined(USE_AURA) && (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+-#if defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
  #include "chrome/browser/themes/theme_service.h"
  #include "chrome/browser/themes/theme_service_factory.h"
  #include "ui/views/linux_ui/linux_ui.h"
-@@ -164,7 +164,7 @@ void UpdateFromSystemSettings(blink::mojom::RendererPr
+@@ -154,7 +154,7 @@ void UpdateFromSystemSettings(blink::RendererPreferenc
      prefs->caret_blink_interval = interval;
  #endif
  
--#if defined(USE_AURA) && defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if defined(USE_AURA) && (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+-#if defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
    views::LinuxUI* linux_ui = views::LinuxUI::instance();
    if (linux_ui) {
      if (ThemeServiceFactory::GetForProfile(profile)->UsingSystemTheme()) {
-@@ -183,7 +183,7 @@ void UpdateFromSystemSettings(blink::mojom::RendererPr
+@@ -173,7 +173,7 @@ void UpdateFromSystemSettings(blink::RendererPreferenc
    }
  #endif
  
diff --git a/devel/electron11/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.js b/devel/electron12/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.js
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.js
rename to devel/electron12/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.js
diff --git a/devel/electron11/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html b/devel/electron12/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html
similarity index 74%
rename from devel/electron11/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html
rename to devel/electron12/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html
index 43218e0a16763dc6b07448650bfc2d72e162910d..6f67f2cc47df561c8e6ade38c389e7b742cbf82e 100644
--- a/devel/electron11/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html
+++ b/devel/electron12/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html
@@ -1,11 +1,11 @@
---- chrome/browser/resources/settings/appearance_page/appearance_page.html.orig	2021-01-07 00:36:24 UTC
+--- chrome/browser/resources/settings/appearance_page/appearance_page.html.orig	2021-04-14 01:08:41 UTC
 +++ chrome/browser/resources/settings/appearance_page/appearance_page.html
 @@ -27,7 +27,7 @@
            <cr-link-row class="first" hidden="[[!pageVisibility.setTheme]]"
                label="$i18n{themes}" sub-label="[[themeSublabel_]]"
                on-click="openThemeUrl_" external></cr-link-row>
--<if expr="not is_linux or chromeos">
-+<if expr="not is_posix or chromeos">
+-<if expr="not is_linux or chromeos or lacros">
++<if expr="not is_posix or chromeos or lacros">
            <template is="dom-if" if="[[prefs.extensions.theme.id.value]]">
              <div class="separator"></div>
              <cr-button id="useDefault" on-click="onUseDefaultTap_">
@@ -13,17 +13,17 @@
              </cr-button>
            </template>
  </if>
--<if expr="is_linux and not chromeos">
-+<if expr="is_posix and not chromeos">
+-<if expr="is_linux and not chromeos and not lacros">
++<if expr="is_posix and not chromeos and not lacros">
            <div class="settings-row continuation"
                hidden="[[!showThemesSecondary_(
                    prefs.extensions.theme.id.value, useSystemTheme_)]]"
-@@ -99,7 +99,7 @@
+@@ -109,7 +109,7 @@
              pref="{{prefs.bookmark_bar.show_on_all_tabs}}"
              label="$i18n{showBookmarksBar}">
          </settings-toggle-button>
--<if expr="is_linux and not chromeos">
-+<if expr="is_posix and not chromeos">
+-<if expr="is_linux and not chromeos and not lacros">
++<if expr="is_posix and not chromeos and not lacros">
          <div class="hr" hidden="[[!pageVisibility.bookmarksBar]]"></div>
          <settings-toggle-button
              pref="{{prefs.browser.custom_chrome_frame}}"
diff --git a/devel/electron11/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.js b/devel/electron12/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.js
similarity index 78%
rename from devel/electron11/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.js
rename to devel/electron12/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.js
index aa82036c684d504e7dea807650df54d4ab5d6d7c..86565c09ab559d0216c7deafa1337e11aa762094 100644
--- a/devel/electron11/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.js
+++ b/devel/electron12/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.js
@@ -1,4 +1,4 @@
---- chrome/browser/resources/settings/appearance_page/appearance_page.js.orig	2021-01-07 00:36:24 UTC
+--- chrome/browser/resources/settings/appearance_page/appearance_page.js.orig	2021-04-14 01:08:41 UTC
 +++ chrome/browser/resources/settings/appearance_page/appearance_page.js
 @@ -137,7 +137,7 @@ Polymer({
      'defaultFontSizeChanged_(prefs.webkit.webprefs.default_font_size.value)',
@@ -22,12 +22,12 @@
      }
  
      let i18nId;
--    // <if expr="is_linux and not chromeos">
-+    // <if expr="is_bsd and not chromeos">
+-    // <if expr="is_linux and not chromeos and not lacros">
++    // <if expr="is_posix and not chromeos and not lacros">
      i18nId = useSystemTheme ? 'systemTheme' : 'classicTheme';
      // </if>
--    // <if expr="not is_linux or chromeos">
-+    // <if expr="not is_bsd or chromeos">
+-    // <if expr="not is_linux or chromeos or lacros">
++    // <if expr="not is_posix or chromeos or lacros">
      i18nId = 'chooseFromWebStore';
      // </if>
      this.themeSublabel_ = this.i18n(i18nId);
diff --git a/devel/electron11/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__handler__util.cc b/devel/electron12/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__handler__util.cc
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__handler__util.cc
rename to devel/electron12/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__handler__util.cc
diff --git a/devel/electron11/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc b/devel/electron12/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc
similarity index 83%
rename from devel/electron11/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc
rename to devel/electron12/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc
index e579b7735ee505461ae67e90f41bbaab642213fb..54360d4b1332c0bbddfe91332f170244339e77f2 100644
--- a/devel/electron11/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc
+++ b/devel/electron12/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc
@@ -1,6 +1,6 @@
---- chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc.orig	2021-01-07 00:36:24 UTC
+--- chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc.orig	2021-04-14 01:08:41 UTC
 +++ chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc
-@@ -676,7 +676,7 @@ void IncidentReportingService::OnEnvironmentDataCollec
+@@ -708,7 +708,7 @@ void IncidentReportingService::OnEnvironmentDataCollec
    environment_collection_pending_ = false;
  
  // Process::Current().CreationTime() is missing on some platforms.
diff --git a/devel/electron11/files/patch-chrome_browser_search_search__suggest_search__suggest__service.cc b/devel/electron12/files/patch-chrome_browser_search_search__suggest_search__suggest__service.cc
similarity index 82%
rename from devel/electron11/files/patch-chrome_browser_search_search__suggest_search__suggest__service.cc
rename to devel/electron12/files/patch-chrome_browser_search_search__suggest_search__suggest__service.cc
index 52412246a4fd0b9b0ff3eb83ea736990aa0e8c6a..43acf69e702392d8bb83d51f593fae538672c21b 100644
--- a/devel/electron11/files/patch-chrome_browser_search_search__suggest_search__suggest__service.cc
+++ b/devel/electron12/files/patch-chrome_browser_search_search__suggest_search__suggest__service.cc
@@ -1,7 +1,7 @@
---- chrome/browser/search/search_suggest/search_suggest_service.cc.orig	2021-01-07 00:36:24 UTC
+--- chrome/browser/search/search_suggest/search_suggest_service.cc.orig	2021-04-14 01:08:41 UTC
 +++ chrome/browser/search/search_suggest/search_suggest_service.cc
 @@ -21,7 +21,11 @@
- #include "components/prefs/scoped_user_pref_update.h"
+ #include "components/search/ntp_features.h"
  #include "components/signin/public/identity_manager/accounts_in_cookie_jar_info.h"
  #include "components/signin/public/identity_manager/identity_manager.h"
 +#if defined(OS_BSD)
diff --git a/devel/electron11/files/patch-chrome_browser_send__tab__to__self_receiving__ui__handler__registry.cc b/devel/electron12/files/patch-chrome_browser_send__tab__to__self_receiving__ui__handler__registry.cc
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_send__tab__to__self_receiving__ui__handler__registry.cc
rename to devel/electron12/files/patch-chrome_browser_send__tab__to__self_receiving__ui__handler__registry.cc
diff --git a/devel/electron11/files/patch-chrome_browser_send__tab__to__self_send__tab__to__self__client__service.cc b/devel/electron12/files/patch-chrome_browser_send__tab__to__self_send__tab__to__self__client__service.cc
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_send__tab__to__self_send__tab__to__self__client__service.cc
rename to devel/electron12/files/patch-chrome_browser_send__tab__to__self_send__tab__to__self__client__service.cc
diff --git a/devel/electron11/files/patch-chrome_browser_sharing_shared__clipboard_feature__flags.cc b/devel/electron12/files/patch-chrome_browser_sharing_shared__clipboard_feature__flags.cc
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_sharing_shared__clipboard_feature__flags.cc
rename to devel/electron12/files/patch-chrome_browser_sharing_shared__clipboard_feature__flags.cc
diff --git a/devel/electron11/files/patch-chrome_browser_sharing_shared__clipboard_feature__flags.h b/devel/electron12/files/patch-chrome_browser_sharing_shared__clipboard_feature__flags.h
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_sharing_shared__clipboard_feature__flags.h
rename to devel/electron12/files/patch-chrome_browser_sharing_shared__clipboard_feature__flags.h
diff --git a/devel/electron11/files/patch-chrome_browser_sharing_sharing__device__registration.cc b/devel/electron12/files/patch-chrome_browser_sharing_sharing__device__registration.cc
similarity index 83%
rename from devel/electron11/files/patch-chrome_browser_sharing_sharing__device__registration.cc
rename to devel/electron12/files/patch-chrome_browser_sharing_sharing__device__registration.cc
index 84c73ad7488e5f86b189a65481534b5d0684bc31..3bcef6c19d8cc110709832be7694b5b9a8429865 100644
--- a/devel/electron11/files/patch-chrome_browser_sharing_sharing__device__registration.cc
+++ b/devel/electron12/files/patch-chrome_browser_sharing_sharing__device__registration.cc
@@ -1,6 +1,6 @@
---- chrome/browser/sharing/sharing_device_registration.cc.orig	2021-01-07 00:36:24 UTC
+--- chrome/browser/sharing/sharing_device_registration.cc.orig	2021-04-14 01:08:41 UTC
 +++ chrome/browser/sharing/sharing_device_registration.cc
-@@ -325,7 +325,7 @@ bool SharingDeviceRegistration::IsSmsFetcherSupported(
+@@ -324,7 +324,7 @@ bool SharingDeviceRegistration::IsSmsFetcherSupported(
  }
  
  bool SharingDeviceRegistration::IsRemoteCopySupported() const {
diff --git a/devel/electron11/files/patch-chrome_browser_sharing_sharing__handler__registry__impl.cc b/devel/electron12/files/patch-chrome_browser_sharing_sharing__handler__registry__impl.cc
similarity index 79%
rename from devel/electron11/files/patch-chrome_browser_sharing_sharing__handler__registry__impl.cc
rename to devel/electron12/files/patch-chrome_browser_sharing_sharing__handler__registry__impl.cc
index f7bdc210d245079b568b95befd4310631c48075c..24a9ec292370ed103b3bade01e7de8bf968cc784 100644
--- a/devel/electron11/files/patch-chrome_browser_sharing_sharing__handler__registry__impl.cc
+++ b/devel/electron12/files/patch-chrome_browser_sharing_sharing__handler__registry__impl.cc
@@ -1,6 +1,6 @@
---- chrome/browser/sharing/sharing_handler_registry_impl.cc.orig	2021-01-07 00:36:24 UTC
+--- chrome/browser/sharing/sharing_handler_registry_impl.cc.orig	2021-04-14 01:08:41 UTC
 +++ chrome/browser/sharing/sharing_handler_registry_impl.cc
-@@ -22,10 +22,10 @@
+@@ -23,10 +23,10 @@
  #include "chrome/browser/sharing/shared_clipboard/shared_clipboard_message_handler_desktop.h"
  #endif  // defined(OS_ANDROID)
  
@@ -8,12 +8,12 @@
 +#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD) || \
      defined(OS_CHROMEOS)
  #include "chrome/browser/sharing/shared_clipboard/remote_copy_message_handler.h"
--#endif  // defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX)
-+#endif  // defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD) ||
-         // defined(OS_CHROMEOS)
+-#endif  // defined(OS_WIN) || defined(OS_MAC) || (defined(OS_LINUX) ||
++#endif  // defined(OS_WIN) || defined(OS_MAC) || (defined(OS_LINUX) || defined(OS_BSD) ||
+         // BUILDFLAG(IS_CHROMEOS_LACROS)) defined(OS_CHROMEOS)
  
  SharingHandlerRegistryImpl::SharingHandlerRegistryImpl(
-@@ -70,14 +70,14 @@ SharingHandlerRegistryImpl::SharingHandlerRegistryImpl
+@@ -71,14 +71,14 @@ SharingHandlerRegistryImpl::SharingHandlerRegistryImpl
          {chrome_browser_sharing::SharingMessage::kSharedClipboardMessage});
    }
  
diff --git a/devel/electron11/files/patch-chrome_browser_signin_signin__util.cc b/devel/electron12/files/patch-chrome_browser_signin_signin__util.cc
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_signin_signin__util.cc
rename to devel/electron12/files/patch-chrome_browser_signin_signin__util.cc
diff --git a/devel/electron11/files/patch-chrome_browser_sync_chrome__sync__client.cc b/devel/electron12/files/patch-chrome_browser_sync_chrome__sync__client.cc
similarity index 79%
rename from devel/electron11/files/patch-chrome_browser_sync_chrome__sync__client.cc
rename to devel/electron12/files/patch-chrome_browser_sync_chrome__sync__client.cc
index 0df7c8a0e08c11dea4b8c4bdf680d9631f731192..d31c938ab4f25b6e785f38e6bf2a51f9f49509ea 100644
--- a/devel/electron11/files/patch-chrome_browser_sync_chrome__sync__client.cc
+++ b/devel/electron12/files/patch-chrome_browser_sync_chrome__sync__client.cc
@@ -1,6 +1,6 @@
---- chrome/browser/sync/chrome_sync_client.cc.orig	2021-01-07 00:36:24 UTC
+--- chrome/browser/sync/chrome_sync_client.cc.orig	2021-04-14 01:08:41 UTC
 +++ chrome/browser/sync/chrome_sync_client.cc
-@@ -458,7 +458,7 @@ ChromeSyncClient::CreateDataTypeControllers(syncer::Sy
+@@ -466,7 +466,7 @@ ChromeSyncClient::CreateDataTypeControllers(syncer::Sy
  
  // Chrome prefers OS provided spell checkers where they exist. So only sync the
  // custom dictionary on platforms that typically don't provide one.
@@ -9,12 +9,12 @@
    // Dictionary sync is enabled by default.
    if (!disabled_types.Has(syncer::DICTIONARY) &&
        GetPrefService()->GetBoolean(spellcheck::prefs::kSpellCheckEnable)) {
-@@ -467,7 +467,7 @@ ChromeSyncClient::CreateDataTypeControllers(syncer::Sy
+@@ -475,7 +475,7 @@ ChromeSyncClient::CreateDataTypeControllers(syncer::Sy
              syncer::DICTIONARY, model_type_store_factory,
              GetSyncableServiceForType(syncer::DICTIONARY), dump_stack));
    }
 -#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN)
 +#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN) || defined(OS_BSD)
  
- #if defined(OS_CHROMEOS)
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
    if (arc::IsArcAllowedForProfile(profile_) &&
diff --git a/devel/electron12/files/patch-chrome_browser_sync_device__info__sync__service__factory.cc b/devel/electron12/files/patch-chrome_browser_sync_device__info__sync__service__factory.cc
new file mode 100644
index 0000000000000000000000000000000000000000..fd1ad5e88b5e6047b48301a5dc3f103babb5bff5
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_sync_device__info__sync__service__factory.cc
@@ -0,0 +1,17 @@
+--- chrome/browser/sync/device_info_sync_service_factory.cc.orig	2021-04-14 01:08:41 UTC
++++ chrome/browser/sync/device_info_sync_service_factory.cc
+@@ -47,12 +47,12 @@ class DeviceInfoSyncClient : public syncer::DeviceInfo
+ // in lacros-chrome once build flag switch of lacros-chrome is
+ // complete.
+ #if defined(OS_WIN) || defined(OS_MAC) || \
+-    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+     syncer::SyncPrefs prefs(profile_->GetPrefs());
+     if (prefs.IsLocalSyncEnabled()) {
+       return "local_device";
+     }
+-#endif  // defined(OS_WIN) || defined(OS_MAC) || (defined(OS_LINUX) ||
++#endif  // defined(OS_WIN) || defined(OS_MAC) || (defined(OS_LINUX) || defined(OS_BSD) ||
+         // BUILDFLAG(IS_CHROMEOS_LACROS))
+ 
+     return GetSigninScopedDeviceIdForProfile(profile_);
diff --git a/devel/electron12/files/patch-chrome_browser_sync_profile__sync__service__factory.cc b/devel/electron12/files/patch-chrome_browser_sync_profile__sync__service__factory.cc
new file mode 100644
index 0000000000000000000000000000000000000000..e4e43258ac7382124a89b43dd5528cd008d34a48
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_sync_profile__sync__service__factory.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/sync/profile_sync_service_factory.cc.orig	2021-04-14 01:08:41 UTC
++++ chrome/browser/sync/profile_sync_service_factory.cc
+@@ -217,7 +217,7 @@ KeyedService* ProfileSyncServiceFactory::BuildServiceI
+ // in lacros-chrome once build flag switch of lacros-chrome is
+ // complete.
+ #if defined(OS_WIN) || defined(OS_MAC) || \
+-    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+   syncer::SyncPrefs prefs(profile->GetPrefs());
+   local_sync_backend_enabled = prefs.IsLocalSyncEnabled();
+   UMA_HISTOGRAM_BOOLEAN("Sync.Local.Enabled", local_sync_backend_enabled);
+@@ -235,7 +235,7 @@ KeyedService* ProfileSyncServiceFactory::BuildServiceI
+ 
+     init_params.start_behavior = syncer::ProfileSyncService::AUTO_START;
+   }
+-#endif  // defined(OS_WIN) || defined(OS_MAC) || (defined(OS_LINUX) ||
++#endif  // defined(OS_WIN) || defined(OS_MAC) || (defined(OS_LINUX) || defined(OS_BSD) ||
+         // BUILDFLAG(IS_CHROMEOS_LACROS))
+ 
+   if (!local_sync_backend_enabled) {
diff --git a/devel/electron11/files/patch-chrome_browser_task__manager_sampling_task__group.cc b/devel/electron12/files/patch-chrome_browser_task__manager_sampling_task__group.cc
similarity index 92%
rename from devel/electron11/files/patch-chrome_browser_task__manager_sampling_task__group.cc
rename to devel/electron12/files/patch-chrome_browser_task__manager_sampling_task__group.cc
index 888d5cddc064c4f7b20a7353401008b6ef5e96fc..270ac5d36bae14faad68adb78bbb70a20fb3d96c 100644
--- a/devel/electron11/files/patch-chrome_browser_task__manager_sampling_task__group.cc
+++ b/devel/electron12/files/patch-chrome_browser_task__manager_sampling_task__group.cc
@@ -1,6 +1,6 @@
---- chrome/browser/task_manager/sampling/task_group.cc.orig	2021-01-07 00:36:24 UTC
+--- chrome/browser/task_manager/sampling/task_group.cc.orig	2021-04-14 01:08:41 UTC
 +++ chrome/browser/task_manager/sampling/task_group.cc
-@@ -32,9 +32,9 @@ const int kBackgroundRefreshTypesMask =
+@@ -33,9 +33,9 @@ const int kBackgroundRefreshTypesMask =
  #if defined(OS_WIN)
      REFRESH_TYPE_START_TIME | REFRESH_TYPE_CPU_TIME |
  #endif  // defined(OS_WIN)
@@ -12,7 +12,7 @@
  #if BUILDFLAG(ENABLE_NACL)
      REFRESH_TYPE_NACL |
  #endif  // BUILDFLAG(ENABLE_NACL)
-@@ -113,9 +113,9 @@ TaskGroup::TaskGroup(
+@@ -114,9 +114,9 @@ TaskGroup::TaskGroup(
  #if BUILDFLAG(ENABLE_NACL)
        nacl_debug_stub_port_(nacl::kGdbDebugStubPortUnknown),
  #endif  // BUILDFLAG(ENABLE_NACL)
@@ -24,7 +24,7 @@
        idle_wakeups_per_second_(-1),
        gpu_memory_has_duplicates_(false),
        is_backgrounded_(false) {
-@@ -128,10 +128,10 @@ TaskGroup::TaskGroup(
+@@ -129,10 +129,10 @@ TaskGroup::TaskGroup(
                              weak_ptr_factory_.GetWeakPtr()),
          base::BindRepeating(&TaskGroup::OnIdleWakeupsRefreshDone,
                              weak_ptr_factory_.GetWeakPtr()),
@@ -37,7 +37,7 @@
          base::BindRepeating(&TaskGroup::OnProcessPriorityDone,
                              weak_ptr_factory_.GetWeakPtr()));
  
-@@ -299,14 +299,14 @@ void TaskGroup::OnRefreshNaClDebugStubPortDone(int nac
+@@ -300,14 +300,14 @@ void TaskGroup::OnRefreshNaClDebugStubPortDone(int nac
  }
  #endif  // BUILDFLAG(ENABLE_NACL)
  
diff --git a/devel/electron11/files/patch-chrome_browser_task__manager_sampling_task__group.h b/devel/electron12/files/patch-chrome_browser_task__manager_sampling_task__group.h
similarity index 92%
rename from devel/electron11/files/patch-chrome_browser_task__manager_sampling_task__group.h
rename to devel/electron12/files/patch-chrome_browser_task__manager_sampling_task__group.h
index c138c50dc1f28c4e5db9401605efa3c28c548952..467cf13599c2bcafa8d99445b44010d6d27f9bd6 100644
--- a/devel/electron11/files/patch-chrome_browser_task__manager_sampling_task__group.h
+++ b/devel/electron12/files/patch-chrome_browser_task__manager_sampling_task__group.h
@@ -1,6 +1,6 @@
---- chrome/browser/task_manager/sampling/task_group.h.orig	2021-01-07 00:36:24 UTC
+--- chrome/browser/task_manager/sampling/task_group.h.orig	2021-04-14 01:08:41 UTC
 +++ chrome/browser/task_manager/sampling/task_group.h
-@@ -39,7 +39,7 @@ constexpr int kUnsupportedVMRefreshFlags =
+@@ -40,7 +40,7 @@ constexpr int kUnsupportedVMRefreshFlags =
      REFRESH_TYPE_WEBCACHE_STATS | REFRESH_TYPE_NETWORK_USAGE |
      REFRESH_TYPE_NACL | REFRESH_TYPE_IDLE_WAKEUPS | REFRESH_TYPE_HANDLES |
      REFRESH_TYPE_START_TIME | REFRESH_TYPE_CPU_TIME | REFRESH_TYPE_PRIORITY |
@@ -9,7 +9,7 @@
      REFRESH_TYPE_FD_COUNT |
  #endif
      REFRESH_TYPE_HARD_FAULTS;
-@@ -122,9 +122,9 @@ class TaskGroup {
+@@ -123,9 +123,9 @@ class TaskGroup {
    int nacl_debug_stub_port() const { return nacl_debug_stub_port_; }
  #endif  // BUILDFLAG(ENABLE_NACL)
  
@@ -21,7 +21,7 @@
  
    int idle_wakeups_per_second() const { return idle_wakeups_per_second_; }
  
-@@ -138,9 +138,9 @@ class TaskGroup {
+@@ -139,9 +139,9 @@ class TaskGroup {
    void RefreshNaClDebugStubPort(int child_process_unique_id);
    void OnRefreshNaClDebugStubPortDone(int port);
  #endif
@@ -33,7 +33,7 @@
  
    void OnCpuRefreshDone(double cpu_usage);
    void OnSwappedMemRefreshDone(int64_t swapped_mem_bytes);
-@@ -209,10 +209,10 @@ class TaskGroup {
+@@ -210,10 +210,10 @@ class TaskGroup {
  #if BUILDFLAG(ENABLE_NACL)
    int nacl_debug_stub_port_;
  #endif  // BUILDFLAG(ENABLE_NACL)
diff --git a/devel/electron11/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc b/devel/electron12/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc
similarity index 90%
rename from devel/electron11/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc
rename to devel/electron12/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc
index 488c462072f24e0a92197f627114817c7ebc2b31..b612208aba68a95fa49c0497d1915a3a848f7994 100644
--- a/devel/electron11/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc
+++ b/devel/electron12/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc
@@ -1,6 +1,6 @@
---- chrome/browser/task_manager/sampling/task_group_sampler.cc.orig	2021-01-07 00:36:24 UTC
+--- chrome/browser/task_manager/sampling/task_group_sampler.cc.orig	2021-04-14 01:08:41 UTC
 +++ chrome/browser/task_manager/sampling/task_group_sampler.cc
-@@ -43,9 +43,9 @@ TaskGroupSampler::TaskGroupSampler(
+@@ -44,9 +44,9 @@ TaskGroupSampler::TaskGroupSampler(
      const OnCpuRefreshCallback& on_cpu_refresh,
      const OnSwappedMemRefreshCallback& on_swapped_mem_refresh,
      const OnIdleWakeupsCallback& on_idle_wakeups,
@@ -12,7 +12,7 @@
      const OnProcessPriorityCallback& on_process_priority)
      : process_(std::move(process)),
        process_metrics_(CreateProcessMetrics(process_.Handle())),
-@@ -53,9 +53,9 @@ TaskGroupSampler::TaskGroupSampler(
+@@ -54,9 +54,9 @@ TaskGroupSampler::TaskGroupSampler(
        on_cpu_refresh_callback_(on_cpu_refresh),
        on_swapped_mem_refresh_callback_(on_swapped_mem_refresh),
        on_idle_wakeups_callback_(on_idle_wakeups),
@@ -24,7 +24,7 @@
        on_process_priority_callback_(on_process_priority) {
    DCHECK(blocking_pool_runner.get());
  
-@@ -85,7 +85,7 @@ void TaskGroupSampler::Refresh(int64_t refresh_flags) 
+@@ -86,7 +86,7 @@ void TaskGroupSampler::Refresh(int64_t refresh_flags) 
          base::BindOnce(on_swapped_mem_refresh_callback_));
    }
  
@@ -33,7 +33,7 @@
    if (TaskManagerObserver::IsResourceRefreshEnabled(REFRESH_TYPE_IDLE_WAKEUPS,
                                                      refresh_flags)) {
      base::PostTaskAndReplyWithResult(
-@@ -93,9 +93,9 @@ void TaskGroupSampler::Refresh(int64_t refresh_flags) 
+@@ -94,9 +94,9 @@ void TaskGroupSampler::Refresh(int64_t refresh_flags) 
          base::BindOnce(&TaskGroupSampler::RefreshIdleWakeupsPerSecond, this),
          base::BindOnce(on_idle_wakeups_callback_));
    }
@@ -45,7 +45,7 @@
    if (TaskManagerObserver::IsResourceRefreshEnabled(REFRESH_TYPE_FD_COUNT,
                                                      refresh_flags)) {
      base::PostTaskAndReplyWithResult(
-@@ -103,7 +103,7 @@ void TaskGroupSampler::Refresh(int64_t refresh_flags) 
+@@ -104,7 +104,7 @@ void TaskGroupSampler::Refresh(int64_t refresh_flags) 
          base::BindOnce(&TaskGroupSampler::RefreshOpenFdCount, this),
          base::BindOnce(on_open_fd_count_callback_));
    }
@@ -54,7 +54,7 @@
  
    if (TaskManagerObserver::IsResourceRefreshEnabled(REFRESH_TYPE_PRIORITY,
                                                      refresh_flags)) {
-@@ -145,13 +145,13 @@ int TaskGroupSampler::RefreshIdleWakeupsPerSecond() {
+@@ -146,13 +146,13 @@ int TaskGroupSampler::RefreshIdleWakeupsPerSecond() {
    return process_metrics_->GetIdleWakeupsPerSecond();
  }
  
diff --git a/devel/electron11/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h b/devel/electron12/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h
rename to devel/electron12/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h
diff --git a/devel/electron11/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc b/devel/electron12/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc
similarity index 88%
rename from devel/electron11/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc
rename to devel/electron12/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc
index aecb62ba624bd1175566fc8f15cde6bec2297fcb..7f24699b0207afd1800f3cfc93384111e345bd2e 100644
--- a/devel/electron11/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc
+++ b/devel/electron12/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc
@@ -1,6 +1,6 @@
---- chrome/browser/task_manager/sampling/task_manager_impl.cc.orig	2021-01-07 00:36:24 UTC
+--- chrome/browser/task_manager/sampling/task_manager_impl.cc.orig	2021-04-14 01:08:41 UTC
 +++ chrome/browser/task_manager/sampling/task_manager_impl.cc
-@@ -220,11 +220,11 @@ void TaskManagerImpl::GetUSERHandles(TaskId task_id,
+@@ -221,11 +221,11 @@ void TaskManagerImpl::GetUSERHandles(TaskId task_id,
  }
  
  int TaskManagerImpl::GetOpenFdCount(TaskId task_id) const {
diff --git a/devel/electron11/files/patch-chrome_browser_task__manager_task__manager__observer.h b/devel/electron12/files/patch-chrome_browser_task__manager_task__manager__observer.h
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_task__manager_task__manager__observer.h
rename to devel/electron12/files/patch-chrome_browser_task__manager_task__manager__observer.h
diff --git a/devel/electron12/files/patch-chrome_browser_themes_theme__service__factory.cc b/devel/electron12/files/patch-chrome_browser_themes_theme__service__factory.cc
new file mode 100644
index 0000000000000000000000000000000000000000..270fa29f159fccaa856738b127c9bf1e23e68507
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_themes_theme__service__factory.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/themes/theme_service_factory.cc.orig	2021-04-14 01:08:41 UTC
++++ chrome/browser/themes/theme_service_factory.cc
+@@ -25,7 +25,7 @@
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #include "chrome/browser/themes/theme_service_aura_linux.h"
+ #include "ui/views/linux_ui/linux_ui.h"
+ #endif
+@@ -82,7 +82,7 @@ KeyedService* ThemeServiceFactory::BuildServiceInstanc
+     content::BrowserContext* profile) const {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   using ThemeService = ThemeServiceAuraLinux;
+ #endif
+ 
+@@ -96,7 +96,7 @@ void ThemeServiceFactory::RegisterProfilePrefs(
+     user_prefs::PrefRegistrySyncable* registry) {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   bool default_uses_system_theme = false;
+ 
+   const views::LinuxUI* linux_ui = views::LinuxUI::instance();
diff --git a/devel/electron11/files/patch-chrome_browser_tracing_crash__service__uploader.cc b/devel/electron12/files/patch-chrome_browser_tracing_crash__service__uploader.cc
similarity index 81%
rename from devel/electron11/files/patch-chrome_browser_tracing_crash__service__uploader.cc
rename to devel/electron12/files/patch-chrome_browser_tracing_crash__service__uploader.cc
index 49bc239c84c085c2bb648375edbacb7e697ed907..01d1e3409fdd4a80afb7690c45183e8060bb5529 100644
--- a/devel/electron11/files/patch-chrome_browser_tracing_crash__service__uploader.cc
+++ b/devel/electron12/files/patch-chrome_browser_tracing_crash__service__uploader.cc
@@ -1,6 +1,6 @@
---- chrome/browser/tracing/crash_service_uploader.cc.orig	2021-01-07 00:36:24 UTC
+--- chrome/browser/tracing/crash_service_uploader.cc.orig	2021-04-14 01:08:41 UTC
 +++ chrome/browser/tracing/crash_service_uploader.cc
-@@ -160,6 +160,8 @@ void TraceCrashServiceUploader::DoCompressOnBackground
+@@ -161,6 +161,8 @@ void TraceCrashServiceUploader::DoCompressOnBackground
    const char product[] = "Chrome_Linux";
  #elif defined(OS_ANDROID)
    const char product[] = "Chrome_Android";
diff --git a/devel/electron11/files/patch-chrome_browser_ui_BUILD.gn b/devel/electron12/files/patch-chrome_browser_ui_BUILD.gn
similarity index 81%
rename from devel/electron11/files/patch-chrome_browser_ui_BUILD.gn
rename to devel/electron12/files/patch-chrome_browser_ui_BUILD.gn
index 45da075d5c27abbeca0cca78519297d17ab626dd..82e8397590ca6883518e2c6c8e1f434f30712c9c 100644
--- a/devel/electron11/files/patch-chrome_browser_ui_BUILD.gn
+++ b/devel/electron12/files/patch-chrome_browser_ui_BUILD.gn
@@ -1,6 +1,6 @@
---- chrome/browser/ui/BUILD.gn.orig	2021-01-07 00:36:24 UTC
+--- chrome/browser/ui/BUILD.gn.orig	2021-04-14 01:08:41 UTC
 +++ chrome/browser/ui/BUILD.gn
-@@ -615,12 +615,15 @@ static_library("ui") {
+@@ -617,12 +617,15 @@ static_library("ui") {
      deps += [ "//components/autofill/content/browser/webauthn" ]
    }
  
diff --git a/devel/electron12/files/patch-chrome_browser_ui_browser__command__controller.cc b/devel/electron12/files/patch-chrome_browser_ui_browser__command__controller.cc
new file mode 100644
index 0000000000000000000000000000000000000000..ad47cba219528fe1e532870a744a41ffc872ac49
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_ui_browser__command__controller.cc
@@ -0,0 +1,38 @@
+--- chrome/browser/ui/browser_command_controller.cc.orig	2021-04-14 01:08:41 UTC
++++ chrome/browser/ui/browser_command_controller.cc
+@@ -87,7 +87,7 @@
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #include "ui/base/ime/linux/text_edit_key_bindings_delegate_auralinux.h"
+ #endif
+ 
+@@ -256,7 +256,7 @@ bool BrowserCommandController::IsReservedCommandOrKey(
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   // If this key was registered by the user as a content editing hotkey, then
+   // it is not reserved.
+   ui::TextEditKeyBindingsDelegateAuraLinux* delegate =
+@@ -492,7 +492,7 @@ bool BrowserCommandController::ExecuteCommandWithDispo
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+     case IDC_MINIMIZE_WINDOW:
+       browser_->window()->Minimize();
+       break;
+@@ -989,7 +989,7 @@ void BrowserCommandController::InitCommandState() {
+ #endif
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   command_updater_.UpdateCommandEnabled(IDC_MINIMIZE_WINDOW, true);
+   command_updater_.UpdateCommandEnabled(IDC_MAXIMIZE_WINDOW, true);
+   command_updater_.UpdateCommandEnabled(IDC_RESTORE_WINDOW, true);
diff --git a/devel/electron12/files/patch-chrome_browser_ui_browser__view__prefs.cc b/devel/electron12/files/patch-chrome_browser_ui_browser__view__prefs.cc
new file mode 100644
index 0000000000000000000000000000000000000000..238225c4ffc70859074aabae05fc77ffb655c252
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_ui_browser__view__prefs.cc
@@ -0,0 +1,24 @@
+--- chrome/browser/ui/browser_view_prefs.cc.orig	2021-04-14 01:08:41 UTC
++++ chrome/browser/ui/browser_view_prefs.cc
+@@ -29,7 +29,7 @@ const char kTabStripLayoutType[] = "tab_strip_layout_t
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ bool GetCustomFramePrefDefault() {
+ #if defined(USE_OZONE)
+   if (features::IsUsingOzonePlatform()) {
+@@ -56,10 +56,10 @@ void RegisterBrowserViewProfilePrefs(
+     user_prefs::PrefRegistrySyncable* registry) {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   registry->RegisterBooleanPref(prefs::kUseCustomChromeFrame,
+                                 GetCustomFramePrefDefault());
+-#endif  // (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) &&
++#endif  // (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)) &&
+         // defined(!OS_CHROMEOS)
+ }
+ 
diff --git a/devel/electron11/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc b/devel/electron12/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc
rename to devel/electron12/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc
diff --git a/devel/electron11/files/patch-chrome_browser_ui_sad__tab.cc b/devel/electron12/files/patch-chrome_browser_ui_sad__tab.cc
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_ui_sad__tab.cc
rename to devel/electron12/files/patch-chrome_browser_ui_sad__tab.cc
diff --git a/devel/electron12/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc b/devel/electron12/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc
new file mode 100644
index 0000000000000000000000000000000000000000..72a66464f49d72f7fa6f5cf8eac4b8bfbac581f1
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/startup/bad_flags_prompt.cc.orig	2021-04-14 01:08:41 UTC
++++ chrome/browser/ui/startup/bad_flags_prompt.cc
+@@ -96,7 +96,7 @@ static const char* kBadFlags[] = {
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+     // Speech dispatcher is buggy, it can crash and it can make Chrome freeze.
+     // http://crbug.com/327295
+     switches::kEnableSpeechDispatcher,
diff --git a/devel/electron11/files/patch-chrome_browser_ui_tab__helpers.cc b/devel/electron12/files/patch-chrome_browser_ui_tab__helpers.cc
similarity index 68%
rename from devel/electron11/files/patch-chrome_browser_ui_tab__helpers.cc
rename to devel/electron12/files/patch-chrome_browser_ui_tab__helpers.cc
index 32a19ead11a04d2299c5640b98f87b7998a8dbd9..fd4fd1569ff5af05aea2a4f6888ce90408a1ad31 100644
--- a/devel/electron11/files/patch-chrome_browser_ui_tab__helpers.cc
+++ b/devel/electron12/files/patch-chrome_browser_ui_tab__helpers.cc
@@ -1,6 +1,6 @@
---- chrome/browser/ui/tab_helpers.cc.orig	2021-01-07 00:36:24 UTC
+--- chrome/browser/ui/tab_helpers.cc.orig	2021-04-14 01:08:41 UTC
 +++ chrome/browser/ui/tab_helpers.cc
-@@ -146,7 +146,7 @@
+@@ -150,7 +150,7 @@
  #include "chrome/browser/ui/app_list/search/cros_action_history/cros_action_recorder_tab_tracker.h"
  #endif
  
@@ -9,12 +9,12 @@
      defined(OS_CHROMEOS)
  #include "chrome/browser/ui/blocked_content/framebust_block_tab_helper.h"
  #include "chrome/browser/ui/hats/hats_helper.h"
-@@ -398,11 +398,11 @@ void TabHelpers::AttachTabHelpers(WebContents* web_con
- #endif
- 
+@@ -422,11 +422,11 @@ void TabHelpers::AttachTabHelpers(WebContents* web_con
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
  #if defined(OS_WIN) || defined(OS_MAC) || \
--    (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+-    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
    metrics::DesktopSessionDurationObserver::CreateForWebContents(web_contents);
  #endif
  
diff --git a/devel/electron11/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc b/devel/electron12/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc
similarity index 91%
rename from devel/electron11/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc
rename to devel/electron12/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc
index 8a6f32531841eee0a17d681e4c99821bdb593925..6a9cfa283f8baabad61899eebb9bc42bb6fefa62 100644
--- a/devel/electron11/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc
+++ b/devel/electron12/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc
@@ -1,6 +1,6 @@
---- chrome/browser/ui/task_manager/task_manager_columns.cc.orig	2021-01-07 00:36:24 UTC
+--- chrome/browser/ui/task_manager/task_manager_columns.cc.orig	2021-04-14 01:08:41 UTC
 +++ chrome/browser/ui/task_manager/task_manager_columns.cc
-@@ -93,10 +93,10 @@ const TableColumnData kColumns[] = {
+@@ -94,10 +94,10 @@ const TableColumnData kColumns[] = {
       base::size("100000") * kCharWidth, -1, true, false, false},
  #endif
  
diff --git a/devel/electron11/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc b/devel/electron12/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc
rename to devel/electron12/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc
diff --git a/devel/electron12/files/patch-chrome_browser_ui_test_test__browser__dialog.cc b/devel/electron12/files/patch-chrome_browser_ui_test_test__browser__dialog.cc
new file mode 100644
index 0000000000000000000000000000000000000000..730f187cca6728c74de300c89d4eb2d48442f694
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_ui_test_test__browser__dialog.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/test/test_browser_dialog.cc.orig	2021-04-14 01:08:41 UTC
++++ chrome/browser/ui/test/test_browser_dialog.cc
+@@ -117,7 +117,7 @@ bool TestBrowserDialog::VerifyUi() {
+ // TODO(https://crbug.com/958242) support Mac for pixel tests.
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_WIN) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if defined(OS_WIN) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+   dialog_widget->SetBlockCloseForTesting(true);
+   // Deactivate before taking screenshot. Deactivated dialog pixel outputs
+   // is more predictable than activated dialog.
diff --git a/devel/electron12/files/patch-chrome_browser_ui_test_test__browser__ui.cc b/devel/electron12/files/patch-chrome_browser_ui_test_test__browser__ui.cc
new file mode 100644
index 0000000000000000000000000000000000000000..a45cd632913e1538e911868deac6d10c50a5b636
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_ui_test_test__browser__ui.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/test/test_browser_ui.cc.orig	2021-04-14 01:08:41 UTC
++++ chrome/browser/ui/test/test_browser_ui.cc
+@@ -13,7 +13,7 @@
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+ #if defined(OS_WIN) || defined(OS_MAC) || \
+-    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+ #include "chrome/test/pixel/browser_skia_gold_pixel_diff.h"
+ #include "ui/base/test/skia_gold_matching_algorithm.h"
+ #include "ui/compositor/test/draw_waiter_for_test.h"
+@@ -37,7 +37,7 @@ std::string NameFromTestCase() {
+ TestBrowserUi::TestBrowserUi() {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_WIN) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if defined(OS_WIN) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+   // Default to fuzzy diff. The magic number is chosen based on
+   // past experiments.
+   SetPixelMatchAlgorithm(
+@@ -50,7 +50,7 @@ TestBrowserUi::~TestBrowserUi() = default;
+ // TODO(https://crbug.com/958242) support Mac for pixel tests.
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_WIN) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if defined(OS_WIN) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+ bool TestBrowserUi::VerifyPixelUi(views::Widget* widget,
+                                   const std::string& screenshot_prefix,
+                                   const std::string& screenshot_name) {
diff --git a/devel/electron11/files/patch-chrome_browser_ui_views_accelerator__table.cc b/devel/electron12/files/patch-chrome_browser_ui_views_accelerator__table.cc
similarity index 65%
rename from devel/electron11/files/patch-chrome_browser_ui_views_accelerator__table.cc
rename to devel/electron12/files/patch-chrome_browser_ui_views_accelerator__table.cc
index 4e782daf842754d3677e42fbd164bb627c706693..e4843c0d0bd3ee24cd321db4dad3432d0a1803ad 100644
--- a/devel/electron11/files/patch-chrome_browser_ui_views_accelerator__table.cc
+++ b/devel/electron12/files/patch-chrome_browser_ui_views_accelerator__table.cc
@@ -1,24 +1,24 @@
---- chrome/browser/ui/views/accelerator_table.cc.orig	2021-01-07 00:36:24 UTC
+--- chrome/browser/ui/views/accelerator_table.cc.orig	2021-04-14 01:08:41 UTC
 +++ chrome/browser/ui/views/accelerator_table.cc
-@@ -58,7 +58,7 @@ const AcceleratorMapping kAcceleratorMap[] = {
-     {ui::VKEY_S, ui::EF_PLATFORM_ACCELERATOR, IDC_SAVE_PAGE},
-     {ui::VKEY_9, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_LAST_TAB},
+@@ -61,7 +61,7 @@ const AcceleratorMapping kAcceleratorMap[] = {
      {ui::VKEY_NUMPAD9, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_LAST_TAB},
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
      {ui::VKEY_9, ui::EF_ALT_DOWN, IDC_SELECT_LAST_TAB},
      {ui::VKEY_NUMPAD9, ui::EF_ALT_DOWN, IDC_SELECT_LAST_TAB},
      {ui::VKEY_NEXT, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, IDC_MOVE_TAB_NEXT},
-@@ -88,7 +88,7 @@ const AcceleratorMapping kAcceleratorMap[] = {
-     {ui::VKEY_NUMPAD7, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_TAB_6},
-     {ui::VKEY_8, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_TAB_7},
+@@ -93,7 +93,7 @@ const AcceleratorMapping kAcceleratorMap[] = {
      {ui::VKEY_NUMPAD8, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_TAB_7},
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
      {ui::VKEY_1, ui::EF_ALT_DOWN, IDC_SELECT_TAB_0},
      {ui::VKEY_NUMPAD1, ui::EF_ALT_DOWN, IDC_SELECT_TAB_0},
      {ui::VKEY_2, ui::EF_ALT_DOWN, IDC_SELECT_TAB_1},
-@@ -106,7 +106,7 @@ const AcceleratorMapping kAcceleratorMap[] = {
+@@ -111,7 +111,7 @@ const AcceleratorMapping kAcceleratorMap[] = {
      {ui::VKEY_8, ui::EF_ALT_DOWN, IDC_SELECT_TAB_7},
      {ui::VKEY_NUMPAD8, ui::EF_ALT_DOWN, IDC_SELECT_TAB_7},
      {ui::VKEY_BROWSER_FAVORITES, ui::EF_NONE, IDC_SHOW_BOOKMARK_BAR},
@@ -27,10 +27,10 @@
      {ui::VKEY_B, ui::EF_SHIFT_DOWN | ui::EF_PLATFORM_ACCELERATOR,
       IDC_SHOW_BOOKMARK_BAR},
      {ui::VKEY_OEM_MINUS, ui::EF_PLATFORM_ACCELERATOR, IDC_ZOOM_MINUS},
-@@ -132,14 +132,14 @@ const AcceleratorMapping kAcceleratorMap[] = {
+@@ -137,14 +137,14 @@ const AcceleratorMapping kAcceleratorMap[] = {
       IDC_SHOW_AVATAR_MENU},
  
-   // Platform-specific key maps.
+ // Platform-specific key maps.
 -#if defined(OS_LINUX) || defined(OS_CHROMEOS)
 +#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
      {ui::VKEY_BROWSER_BACK, ui::EF_NONE, IDC_BACK},
@@ -42,5 +42,5 @@
 -#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
 +#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
- #if defined(OS_CHROMEOS)
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
      // On Chrome OS, VKEY_BROWSER_SEARCH is handled in Ash.
diff --git a/devel/electron12/files/patch-chrome_browser_ui_views_apps_chrome__native__app__window__views__aura.cc b/devel/electron12/files/patch-chrome_browser_ui_views_apps_chrome__native__app__window__views__aura.cc
new file mode 100644
index 0000000000000000000000000000000000000000..9219806b73cb015a1033806abbfd2920ebeff498
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_ui_views_apps_chrome__native__app__window__views__aura.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/views/apps/chrome_native_app_window_views_aura.cc.orig	2021-04-14 01:08:41 UTC
++++ chrome/browser/ui/views/apps/chrome_native_app_window_views_aura.cc
+@@ -22,7 +22,7 @@
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #include "chrome/browser/shell_integration_linux.h"
+ #endif
+ 
+@@ -61,7 +61,7 @@ void ChromeNativeAppWindowViewsAura::OnBeforeWidgetIni
+     views::Widget* widget) {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   std::string app_name =
+       web_app::GenerateApplicationNameFromAppId(app_window()->extension_id());
+   // Set up a custom WM_CLASS for app windows. This allows task switchers in
+@@ -71,7 +71,7 @@ void ChromeNativeAppWindowViewsAura::OnBeforeWidgetIni
+   init_params->wm_class_class = shell_integration_linux::GetProgramClassClass();
+   const char kX11WindowRoleApp[] = "app";
+   init_params->wm_role_name = std::string(kX11WindowRoleApp);
+-#endif  // defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#endif  // defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ 
+   ChromeNativeAppWindowViews::OnBeforeWidgetInit(create_params, init_params,
+                                                  widget);
diff --git a/devel/electron11/files/patch-chrome_browser_ui_views_bookmarks_bookmark__bar__view__test.cc b/devel/electron12/files/patch-chrome_browser_ui_views_bookmarks_bookmark__bar__view__test.cc
similarity index 80%
rename from devel/electron11/files/patch-chrome_browser_ui_views_bookmarks_bookmark__bar__view__test.cc
rename to devel/electron12/files/patch-chrome_browser_ui_views_bookmarks_bookmark__bar__view__test.cc
index 7e9b1664a865d4ea80c7c10329a28d284a12860c..b081711d0377c1a694593c67e136868996e0431e 100644
--- a/devel/electron11/files/patch-chrome_browser_ui_views_bookmarks_bookmark__bar__view__test.cc
+++ b/devel/electron12/files/patch-chrome_browser_ui_views_bookmarks_bookmark__bar__view__test.cc
@@ -1,6 +1,6 @@
---- chrome/browser/ui/views/bookmarks/bookmark_bar_view_test.cc.orig	2021-01-07 00:36:25 UTC
+--- chrome/browser/ui/views/bookmarks/bookmark_bar_view_test.cc.orig	2021-04-14 01:08:41 UTC
 +++ chrome/browser/ui/views/bookmarks/bookmark_bar_view_test.cc
-@@ -1848,7 +1848,7 @@ class BookmarkBarViewTest20 : public BookmarkBarViewEv
+@@ -1856,7 +1856,7 @@ class BookmarkBarViewTest20 : public BookmarkBarViewEv
    }
  
    void Step3() {
diff --git a/devel/electron12/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc b/devel/electron12/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc
new file mode 100644
index 0000000000000000000000000000000000000000..df54261d4fa9e2e63ec693e2fbd00576dc983dc3
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc
@@ -0,0 +1,38 @@
+--- chrome/browser/ui/views/chrome_browser_main_extra_parts_views.cc.orig	2021-04-14 01:08:41 UTC
++++ chrome/browser/ui/views/chrome_browser_main_extra_parts_views.cc
+@@ -38,7 +38,7 @@
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #include <sys/stat.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+@@ -48,7 +48,7 @@
+ #include "chrome/grit/generated_resources.h"
+ #include "content/public/common/content_switches.h"
+ #include "ui/base/l10n/l10n_util.h"
+-#endif  // defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#endif  // defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ 
+ // This connector is used in ui_devtools's TracingAgent to hook up with the
+ // tracing service.
+@@ -120,7 +120,7 @@ void ChromeBrowserMainExtraPartsViews::PreProfileInit(
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   // On the Linux desktop, we want to prevent the user from logging in as root,
+   // so that we don't destroy the profile. Now that we have some minimal ui
+   // initialized, check to see if we're running as root and bail if we are.
+@@ -151,7 +151,7 @@ void ChromeBrowserMainExtraPartsViews::PreProfileInit(
+   base::RunLoop().RunUntilIdle();
+ 
+   exit(EXIT_FAILURE);
+-#endif  // defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#endif  // defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ }
+ 
+ void ChromeBrowserMainExtraPartsViews::PostBrowserStart() {
diff --git a/devel/electron12/files/patch-chrome_browser_ui_views_chrome__views__delegate.h b/devel/electron12/files/patch-chrome_browser_ui_views_chrome__views__delegate.h
new file mode 100644
index 0000000000000000000000000000000000000000..ebb079216666188d1be2ff0690fb69ba2a1cadef
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_ui_views_chrome__views__delegate.h
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/chrome_views_delegate.h.orig	2021-04-14 01:08:41 UTC
++++ chrome/browser/ui/views/chrome_views_delegate.h
+@@ -48,7 +48,7 @@ class ChromeViewsDelegate : public views::ViewsDelegat
+                              base::OnceClosure callback) override;
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   gfx::ImageSkia* GetDefaultWindowIcon() const override;
+   bool WindowManagerProvidesTitleBar(bool maximized) override;
+ #endif
diff --git a/devel/electron12/files/patch-chrome_browser_ui_views_download_download__item__view.cc b/devel/electron12/files/patch-chrome_browser_ui_views_download_download__item__view.cc
new file mode 100644
index 0000000000000000000000000000000000000000..74a53f35b9194d2904f244e92ef73b7b4aad9df6
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_ui_views_download_download__item__view.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/views/download/download_item_view.cc.orig	2021-04-14 01:08:41 UTC
++++ chrome/browser/ui/views/download/download_item_view.cc
+@@ -189,7 +189,7 @@ bool UseNewWarnings() {
+ }
+ 
+ int GetFilenameStyle(const views::Label& label) {
+-#if !defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if !defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_BSD)
+   if (UseNewWarnings())
+     return STYLE_EMPHASIZED;
+ #endif
+@@ -197,7 +197,7 @@ int GetFilenameStyle(const views::Label& label) {
+ }
+ 
+ int GetFilenameStyle(const views::StyledLabel& label) {
+-#if !defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if !defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_BSD)
+   if (UseNewWarnings())
+     return STYLE_EMPHASIZED;
+ #endif
diff --git a/devel/electron12/files/patch-chrome_browser_ui_views_frame_browser__frame.cc b/devel/electron12/files/patch-chrome_browser_ui_views_frame_browser__frame.cc
new file mode 100644
index 0000000000000000000000000000000000000000..bd8f010471338b5b391702612b3af1b46b051898
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_ui_views_frame_browser__frame.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/views/frame/browser_frame.cc.orig	2021-04-14 01:08:41 UTC
++++ chrome/browser/ui/views/frame/browser_frame.cc
+@@ -44,7 +44,7 @@
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #include "ui/display/screen.h"
+ #endif
+ 
+@@ -53,7 +53,7 @@ namespace {
+ bool IsUsingGtkTheme(Profile* profile) {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   return ThemeServiceFactory::GetForProfile(profile)->UsingSystemTheme();
+ #else
+   return false;
+@@ -226,7 +226,7 @@ void BrowserFrame::OnNativeWidgetWorkspaceChanged() {
+                                            IsVisibleOnAllWorkspaces());
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   // If the window was sent to a different workspace, prioritize it if
+   // it was sent to the current workspace and deprioritize it
+   // otherwise.  This is done by MoveBrowsersInWorkspaceToFront()
diff --git a/devel/electron12/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc b/devel/electron12/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc
new file mode 100644
index 0000000000000000000000000000000000000000..cd5965173904dad9c51d47907837cf1ad71b77b7
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/views/frame/browser_non_client_frame_view_factory_views.cc.orig	2021-04-14 01:08:41 UTC
++++ chrome/browser/ui/views/frame/browser_non_client_frame_view_factory_views.cc
+@@ -16,7 +16,7 @@
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #include "chrome/browser/ui/views/frame/desktop_linux_browser_frame_view.h"
+ #include "chrome/browser/ui/views/frame/desktop_linux_browser_frame_view_layout.h"
+ #include "ui/views/linux_ui/linux_ui.h"
+@@ -32,7 +32,7 @@ std::unique_ptr<OpaqueBrowserFrameView> CreateOpaqueBr
+     BrowserView* browser_view) {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   auto* linux_ui = views::LinuxUI::instance();
+   auto* profile = browser_view->browser()->profile();
+   auto* theme_service_factory = ThemeServiceFactory::GetForProfile(profile);
diff --git a/devel/electron12/files/patch-chrome_browser_ui_views_frame_browser__view.cc b/devel/electron12/files/patch-chrome_browser_ui_views_frame_browser__view.cc
new file mode 100644
index 0000000000000000000000000000000000000000..b1adb8641932af9a09cc3d2e9a81528061885ee0
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_ui_views_frame_browser__view.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/views/frame/browser_view.cc.orig	2021-04-14 01:08:41 UTC
++++ chrome/browser/ui/views/frame/browser_view.cc
+@@ -1504,7 +1504,7 @@ void BrowserView::TabDraggingStatusChanged(bool is_dra
+   // CrOS cleanup is done.
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if !(defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if !(defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
+   contents_web_view_->SetFastResize(is_dragging);
+   if (!is_dragging) {
+     // When tab dragging is ended, we need to make sure the web contents get
+@@ -1886,7 +1886,7 @@ void BrowserView::UserChangedTheme(BrowserThemeChangeT
+   bool must_regenerate_frame;
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   // GTK and user theme changes can both change frame buttons, so the frame
+   // always needs to be regenerated on Linux.
+   must_regenerate_frame = true;
diff --git a/devel/electron11/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc b/devel/electron12/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc
similarity index 67%
rename from devel/electron11/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc
rename to devel/electron12/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc
index 9b488e8b7860e08476a2369d315c9c889723656a..69b92958ce974e4d76b1f3d1abdbcdc365c4ea38 100644
--- a/devel/electron11/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc
+++ b/devel/electron12/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc
@@ -1,6 +1,6 @@
---- chrome/browser/ui/views/frame/opaque_browser_frame_view.cc.orig	2021-01-07 00:36:25 UTC
+--- chrome/browser/ui/views/frame/opaque_browser_frame_view.cc.orig	2021-04-14 01:08:41 UTC
 +++ chrome/browser/ui/views/frame/opaque_browser_frame_view.cc
-@@ -49,7 +49,7 @@
+@@ -50,7 +50,7 @@
  #include "ui/views/window/vector_icons/vector_icons.h"
  #include "ui/views/window/window_shape.h"
  
@@ -9,16 +9,16 @@
  #include "ui/views/controls/menu/menu_runner.h"
  #endif
  
-@@ -464,7 +464,7 @@ bool OpaqueBrowserFrameView::EverHasVisibleBackgroundT
- 
- OpaqueBrowserFrameView::FrameButtonStyle
+@@ -468,7 +468,7 @@ OpaqueBrowserFrameView::FrameButtonStyle
  OpaqueBrowserFrameView::GetFrameButtonStyle() const {
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
    return FrameButtonStyle::kMdButton;
  #else
    return FrameButtonStyle::kImageButton;
-@@ -657,7 +657,7 @@ gfx::Rect OpaqueBrowserFrameView::IconBounds() const {
+@@ -662,7 +662,7 @@ gfx::Rect OpaqueBrowserFrameView::IconBounds() const {
  }
  
  void OpaqueBrowserFrameView::WindowIconPressed() {
diff --git a/devel/electron11/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__platform__specific.cc b/devel/electron12/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__platform__specific.cc
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__platform__specific.cc
rename to devel/electron12/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__platform__specific.cc
diff --git a/devel/electron12/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc b/devel/electron12/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc
new file mode 100644
index 0000000000000000000000000000000000000000..49f334c59688a93b140804f2934e5c645c3d216b
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/views/frame/system_menu_model_builder.cc.orig	2021-04-14 01:08:41 UTC
++++ chrome/browser/ui/views/frame/system_menu_model_builder.cc
+@@ -70,7 +70,7 @@ void SystemMenuModelBuilder::BuildSystemMenuForBrowser
+     ui::SimpleMenuModel* model) {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)
++#if (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+   model->AddItemWithStringId(IDC_MINIMIZE_WINDOW, IDS_MINIMIZE_WINDOW_MENU);
+   model->AddItemWithStringId(IDC_MAXIMIZE_WINDOW, IDS_MAXIMIZE_WINDOW_MENU);
+   model->AddItemWithStringId(IDC_RESTORE_WINDOW, IDS_RESTORE_WINDOW_MENU);
+@@ -87,7 +87,7 @@ void SystemMenuModelBuilder::BuildSystemMenuForBrowser
+   }
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)
++#if (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+   model->AddSeparator(ui::NORMAL_SEPARATOR);
+   model->AddCheckItemWithStringId(IDC_USE_SYSTEM_TITLE_BAR,
+                                   IDS_SHOW_WINDOW_DECORATIONS_MENU);
+@@ -130,7 +130,7 @@ void SystemMenuModelBuilder::BuildSystemMenuForAppOrPo
+   }
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+   model->AddSeparator(ui::NORMAL_SEPARATOR);
+   model->AddItemWithStringId(IDC_CLOSE_WINDOW, IDS_CLOSE);
+ #endif
diff --git a/devel/electron12/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc b/devel/electron12/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc
new file mode 100644
index 0000000000000000000000000000000000000000..ad72d66cd800471473d62a1fbf2a638104721c46
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/views/frame/system_menu_model_delegate.cc.orig	2021-04-14 01:08:41 UTC
++++ chrome/browser/ui/views/frame/system_menu_model_delegate.cc
+@@ -19,7 +19,7 @@
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #include "chrome/common/pref_names.h"
+ #include "components/prefs/pref_service.h"
+ #endif
+@@ -36,7 +36,7 @@ SystemMenuModelDelegate::~SystemMenuModelDelegate() {}
+ bool SystemMenuModelDelegate::IsCommandIdChecked(int command_id) const {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   if (command_id == IDC_USE_SYSTEM_TITLE_BAR) {
+     PrefService* prefs = browser_->profile()->GetPrefs();
+     return !prefs->GetBoolean(prefs::kUseCustomChromeFrame);
+@@ -52,7 +52,7 @@ bool SystemMenuModelDelegate::IsCommandIdEnabled(int c
+ bool SystemMenuModelDelegate::IsCommandIdVisible(int command_id) const {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   bool is_maximized = browser_->window()->IsMaximized();
+   switch (command_id) {
+     case IDC_MAXIMIZE_WINDOW:
diff --git a/devel/electron11/files/patch-chrome_browser_ui_views_hung__renderer__view.cc b/devel/electron12/files/patch-chrome_browser_ui_views_hung__renderer__view.cc
similarity index 76%
rename from devel/electron11/files/patch-chrome_browser_ui_views_hung__renderer__view.cc
rename to devel/electron12/files/patch-chrome_browser_ui_views_hung__renderer__view.cc
index f6a6b3f77429214a1bab9995bd60777977fef125..88ffd34cf43ab241ee7909f4e49e42902ac94ae7 100644
--- a/devel/electron11/files/patch-chrome_browser_ui_views_hung__renderer__view.cc
+++ b/devel/electron12/files/patch-chrome_browser_ui_views_hung__renderer__view.cc
@@ -1,6 +1,6 @@
---- chrome/browser/ui/views/hung_renderer_view.cc.orig	2021-01-07 00:36:25 UTC
+--- chrome/browser/ui/views/hung_renderer_view.cc.orig	2021-04-14 01:08:41 UTC
 +++ chrome/browser/ui/views/hung_renderer_view.cc
-@@ -421,7 +421,7 @@ void HungRendererDialogView::ForceCrashHungRenderer() 
+@@ -423,7 +423,7 @@ void HungRendererDialogView::ForceCrashHungRenderer() 
    content::RenderProcessHost* rph =
        hung_pages_table_model_->GetRenderWidgetHost()->GetProcess();
    if (rph) {
diff --git a/devel/electron12/files/patch-chrome_browser_ui_views_profiles_profile__menu__view__base.cc b/devel/electron12/files/patch-chrome_browser_ui_views_profiles_profile__menu__view__base.cc
new file mode 100644
index 0000000000000000000000000000000000000000..39da0e972af2d7b650707a476ef30725d1cda9d3
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_ui_views_profiles_profile__menu__view__base.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/profiles/profile_menu_view_base.cc.orig	2021-04-14 01:08:41 UTC
++++ chrome/browser/ui/views/profiles/profile_menu_view_base.cc
+@@ -573,7 +573,7 @@ void ProfileMenuViewBase::SetProfileIdentityInfo(
+ 
+   auto avatar_image_view = std::make_unique<AvatarImageView>(image_model, this);
+ 
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+   // crbug.com/1161166: Orca does not read the accessible window title of the
+   // bubble, so we duplicate it in the top-level menu item. To be revisited
+   // after considering other options, including fixes on the AT side.
diff --git a/devel/electron12/files/patch-chrome_browser_ui_views_tabs_new__tab__button.cc b/devel/electron12/files/patch-chrome_browser_ui_views_tabs_new__tab__button.cc
new file mode 100644
index 0000000000000000000000000000000000000000..1f5d5bd3ccb0b36e27f0b62e205a3c618245eefd
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_ui_views_tabs_new__tab__button.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/tabs/new_tab_button.cc.orig	2021-04-14 01:08:42 UTC
++++ chrome/browser/ui/views/tabs/new_tab_button.cc
+@@ -58,7 +58,7 @@ NewTabButton::NewTabButton(TabStrip* tab_strip, Presse
+   SetAnimateOnStateChange(true);
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   SetTriggerableEventFlags(GetTriggerableEventFlags() |
+                            ui::EF_MIDDLE_MOUSE_BUTTON);
+ #endif
diff --git a/devel/electron11/files/patch-chrome_browser_ui_views_tabs_tab.cc b/devel/electron12/files/patch-chrome_browser_ui_views_tabs_tab.cc
similarity index 77%
rename from devel/electron11/files/patch-chrome_browser_ui_views_tabs_tab.cc
rename to devel/electron12/files/patch-chrome_browser_ui_views_tabs_tab.cc
index 404f095d6e5f677c17993076ac534f26c10c516d..300018990dec340db01aafc44339304c690e71d4 100644
--- a/devel/electron11/files/patch-chrome_browser_ui_views_tabs_tab.cc
+++ b/devel/electron12/files/patch-chrome_browser_ui_views_tabs_tab.cc
@@ -1,6 +1,6 @@
---- chrome/browser/ui/views/tabs/tab.cc.orig	2021-01-07 00:36:25 UTC
+--- chrome/browser/ui/views/tabs/tab.cc.orig	2021-04-14 01:08:42 UTC
 +++ chrome/browser/ui/views/tabs/tab.cc
-@@ -571,7 +571,7 @@ void Tab::MaybeUpdateHoverStatus(const ui::MouseEvent&
+@@ -577,7 +577,7 @@ void Tab::MaybeUpdateHoverStatus(const ui::MouseEvent&
    if (mouse_hovered_ || !GetWidget()->IsMouseEventsEnabled())
      return;
  
diff --git a/devel/electron11/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc b/devel/electron12/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc
similarity index 57%
rename from devel/electron11/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc
rename to devel/electron12/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc
index 5ec140f0f6bce85672111430eff6a1b5bbd21c19..d5e9ef1ed7b0de052d0659709394ced1eabbf221 100644
--- a/devel/electron11/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc
+++ b/devel/electron12/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc
@@ -1,6 +1,6 @@
---- chrome/browser/ui/views/tabs/tab_drag_controller.cc.orig	2021-01-07 00:36:25 UTC
+--- chrome/browser/ui/views/tabs/tab_drag_controller.cc.orig	2021-04-14 01:08:42 UTC
 +++ chrome/browser/ui/views/tabs/tab_drag_controller.cc
-@@ -445,7 +445,7 @@ void TabDragController::Init(TabDragContext* source_co
+@@ -447,7 +447,7 @@ void TabDragController::Init(TabDragContext* source_co
    //     synchronous on desktop Linux, so use that.
    // - Chrome OS
    //     Releasing capture on Ash cancels gestures so avoid it.
@@ -9,21 +9,21 @@
    can_release_capture_ = false;
  #endif
    start_point_in_screen_ = gfx::Point(source_view_offset, mouse_offset.y());
-@@ -895,7 +895,7 @@ TabDragController::DragBrowserToNewTabStrip(TabDragCon
-     else
-       SetCapture(target_context);
+@@ -898,7 +898,7 @@ TabDragController::DragBrowserToNewTabStrip(TabDragCon
  
--#if !defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#if (!defined(OS_LINUX) || defined(OS_CHROMEOS)) && !defined(OS_BSD)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if !(defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if !(defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
      // EndMoveLoop is going to snap the window back to its original location.
      // Hide it so users don't see this. Hiding a window in Linux aura causes
      // it to lose capture so skip it.
-@@ -2081,7 +2081,7 @@ TabDragController::Liveness TabDragController::GetLoca
-     if (dragged_window)
-       exclude.insert(dragged_window);
+@@ -2117,7 +2117,7 @@ TabDragController::Liveness TabDragController::GetLoca
    }
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
    // Exclude windows which are pending deletion via Browser::TabStripEmpty().
    // These windows can be returned in the Linux Aura port because the browser
    // window which was used for dragging is not hidden once all of its tabs are
diff --git a/devel/electron11/files/patch-chrome_browser_ui_webui_about__ui.cc b/devel/electron12/files/patch-chrome_browser_ui_webui_about__ui.cc
similarity index 78%
rename from devel/electron11/files/patch-chrome_browser_ui_webui_about__ui.cc
rename to devel/electron12/files/patch-chrome_browser_ui_webui_about__ui.cc
index 67228bd53a15fef19d4865b144fc78f1d95730f5..36ea50f00df4b1c11a63a7bc213d5b7eec64dc62 100644
--- a/devel/electron11/files/patch-chrome_browser_ui_webui_about__ui.cc
+++ b/devel/electron12/files/patch-chrome_browser_ui_webui_about__ui.cc
@@ -1,6 +1,6 @@
---- chrome/browser/ui/webui/about_ui.cc.orig	2021-01-07 00:36:25 UTC
+--- chrome/browser/ui/webui/about_ui.cc.orig	2021-04-14 01:08:42 UTC
 +++ chrome/browser/ui/webui/about_ui.cc
-@@ -579,7 +579,7 @@ std::string ChromeURLs() {
+@@ -580,7 +580,7 @@ std::string ChromeURLs() {
    return html;
  }
  
@@ -9,7 +9,7 @@
  std::string AboutLinuxProxyConfig() {
    std::string data;
    AppendHeader(&data, 0,
-@@ -635,7 +635,7 @@ void AboutUIHTMLSource::StartDataRequest(
+@@ -636,7 +636,7 @@ void AboutUIHTMLSource::StartDataRequest(
        response =
            ui::ResourceBundle::GetSharedInstance().LoadDataResourceString(idr);
      }
diff --git a/devel/electron11/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc b/devel/electron12/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc
similarity index 64%
rename from devel/electron11/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc
rename to devel/electron12/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc
index 7bb044dedbf7c14bf7a4f6663898645fafb0bb94..f5747d9a7af36cfb2b6c0811347c42e0e7f9236e 100644
--- a/devel/electron11/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc
+++ b/devel/electron12/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc
@@ -1,6 +1,15 @@
---- chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc.orig	2021-01-07 00:36:25 UTC
+--- chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc.orig	2021-04-14 01:08:42 UTC
 +++ chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
-@@ -246,12 +246,12 @@
+@@ -242,7 +242,7 @@
+ #include "chrome/browser/ui/webui/app_launcher_page_ui.h"
+ #endif
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "chrome/browser/ui/webui/webui_js_error/webui_js_error_ui.h"
+ #endif
+ 
+@@ -263,12 +263,12 @@
  #include "chrome/browser/ui/webui/conflicts/conflicts_ui.h"
  #endif
  
@@ -15,7 +24,7 @@
      defined(OS_ANDROID)
  #include "chrome/browser/ui/webui/sandbox/sandbox_internals_ui.h"
  #endif
-@@ -425,7 +425,7 @@ bool IsAboutUI(const GURL& url) {
+@@ -465,7 +465,7 @@ bool IsAboutUI(const GURL& url) {
  #if !defined(OS_ANDROID)
            || url.host_piece() == chrome::kChromeUITermsHost
  #endif
@@ -23,8 +32,17 @@
 +#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
            || url.host_piece() == chrome::kChromeUILinuxProxyConfigHost
  #endif
- #if defined(OS_CHROMEOS)
-@@ -816,7 +816,7 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* we
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
+@@ -811,7 +811,7 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* we
+   }
+ #endif  // !defined(OFFICIAL_BUILD)
+ #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   if (url.host_piece() == chrome::kChromeUIWebUIJsErrorHost)
+     return &NewWebUI<WebUIJsErrorUI>;
+ #endif
+@@ -873,7 +873,7 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* we
    if (url.host_piece() == chrome::kChromeUINaClHost)
      return &NewWebUI<NaClUI>;
  #endif
@@ -33,7 +51,7 @@
      defined(USE_AURA)
    if (url.host_piece() == chrome::kChromeUITabModalConfirmDialogHost)
      return &NewWebUI<ConstrainedWebDialogUI>;
-@@ -865,19 +865,19 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* we
+@@ -917,13 +917,13 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* we
      return &NewWebUI<media_router::MediaRouterInternalsUI>;
    }
  #endif
@@ -49,10 +67,12 @@
      defined(OS_CHROMEOS)
    if (url.host_piece() == chrome::kChromeUIDiscardsHost)
      return &NewWebUI<DiscardsUI>;
- #endif
+@@ -931,7 +931,7 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* we
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
  #if defined(OS_WIN) || defined(OS_MAC) || \
--    (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+-    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
    if (url.host_piece() == chrome::kChromeUIBrowserSwitchHost)
      return &NewWebUI<BrowserSwitchUI>;
  #endif
diff --git a/devel/electron12/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc b/devel/electron12/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc
new file mode 100644
index 0000000000000000000000000000000000000000..b50b2e22b65a7826c9d52f97076b2346a826fcd0
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/webui/settings/appearance_handler.cc.orig	2021-04-14 01:08:42 UTC
++++ chrome/browser/ui/webui/settings/appearance_handler.cc
+@@ -31,7 +31,7 @@ void AppearanceHandler::RegisterMessages() {
+                           base::Unretained(this)));
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)
++#if (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+   web_ui()->RegisterMessageCallback(
+       "useSystemTheme",
+       base::BindRepeating(&AppearanceHandler::HandleUseSystemTheme,
+@@ -45,7 +45,7 @@ void AppearanceHandler::HandleUseDefaultTheme(const ba
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)
++#if (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+ void AppearanceHandler::HandleUseSystemTheme(const base::ListValue* args) {
+   if (profile_->IsSupervised())
+     NOTREACHED();
diff --git a/devel/electron12/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h b/devel/electron12/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h
new file mode 100644
index 0000000000000000000000000000000000000000..0b7fa52a45a4b3a406b6bcffa194ca99e721ef69
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/webui/settings/appearance_handler.h.orig	2021-04-14 01:08:42 UTC
++++ chrome/browser/ui/webui/settings/appearance_handler.h
+@@ -39,7 +39,7 @@ class AppearanceHandler : public SettingsPageUIHandler
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   // Changes the UI theme of the browser to the system (GTK+) theme.
+   void HandleUseSystemTheme(const base::ListValue* args);
+ #endif
diff --git a/devel/electron12/files/patch-chrome_browser_ui_webui_settings_settings__localized__strings__provider.cc b/devel/electron12/files/patch-chrome_browser_ui_webui_settings_settings__localized__strings__provider.cc
new file mode 100644
index 0000000000000000000000000000000000000000..7af4f18cc662b6cc157f4939a6f2d5d358e4fe02
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_ui_webui_settings_settings__localized__strings__provider.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc.orig	2021-04-14 01:08:42 UTC
++++ chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
+@@ -343,7 +343,7 @@ void AddAppearanceStrings(content::WebUIDataSource* ht
+     {"huge", IDS_SETTINGS_HUGE_FONT_SIZE},
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)
++#if (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+     {"systemTheme", IDS_SETTINGS_SYSTEM_THEME},
+     {"useSystemTheme", IDS_SETTINGS_USE_SYSTEM_THEME},
+     {"classicTheme", IDS_SETTINGS_CLASSIC_THEME},
+@@ -351,7 +351,7 @@ void AddAppearanceStrings(content::WebUIDataSource* ht
+ #else
+     {"resetToDefaultTheme", IDS_SETTINGS_RESET_TO_DEFAULT_THEME},
+ #endif
+-#if defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)
++#if (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+     {"showWindowDecorations", IDS_SHOW_WINDOW_DECORATIONS},
+ #endif
+ #if defined(OS_MAC)
diff --git a/devel/electron12/files/patch-chrome_browser_ui_webui_webui__js__error_webui__js__error__ui.cc b/devel/electron12/files/patch-chrome_browser_ui_webui_webui__js__error_webui__js__error__ui.cc
new file mode 100644
index 0000000000000000000000000000000000000000..7729d159ea945a2cce351e4c0905b22e677e73fa
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_ui_webui_webui__js__error_webui__js__error__ui.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/webui/webui_js_error/webui_js_error_ui.cc.orig	2021-04-14 01:08:42 UTC
++++ chrome/browser/ui/webui/webui_js_error/webui_js_error_ui.cc
+@@ -20,7 +20,7 @@
+ 
+ WebUIJsErrorUI::WebUIJsErrorUI(content::WebUI* web_ui)
+     : content::WebUIController(web_ui) {
+-#if !defined(OS_WIN) && !defined(OS_FUCHSIA)
++#if !defined(OS_WIN) && !defined(OS_FUCHSIA) && !defined(OS_BSD)
+   VLOG(3) << std::boolalpha << "chrome://webuijserror loading. "
+           << "Experiment state: send javascript errors is "
+           << base::FeatureList::IsEnabled(
diff --git a/devel/electron11/files/patch-chrome_browser_web__applications_components_web__app__file__handler__registration.h b/devel/electron12/files/patch-chrome_browser_web__applications_components_web__app__file__handler__registration.h
similarity index 100%
rename from devel/electron11/files/patch-chrome_browser_web__applications_components_web__app__file__handler__registration.h
rename to devel/electron12/files/patch-chrome_browser_web__applications_components_web__app__file__handler__registration.h
diff --git a/devel/electron12/files/patch-chrome_browser_web__applications_components_web__app__run__on__os__login.cc b/devel/electron12/files/patch-chrome_browser_web__applications_components_web__app__run__on__os__login.cc
new file mode 100644
index 0000000000000000000000000000000000000000..2cb8da5735f6844e7879b0e2736d283df42723af
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_web__applications_components_web__app__run__on__os__login.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/web_applications/components/web_app_run_on_os_login.cc.orig	2021-04-14 01:08:42 UTC
++++ chrome/browser/web_applications/components/web_app_run_on_os_login.cc
+@@ -34,7 +34,7 @@ namespace internals {
+ 
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if !(defined(OS_WIN) || defined(OS_MAC) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)))
++#if !(defined(OS_WIN) || defined(OS_MAC) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)))
+ // TODO(crbug.com/897302): This boilerplate function is used for platforms
+ // that don't support Run On OS Login. Currently the feature is supported on
+ // Windows, Linux and MacOS.
diff --git a/devel/electron11/files/patch-chrome_browser_web__applications_components_web__app__shortcut.cc b/devel/electron12/files/patch-chrome_browser_web__applications_components_web__app__shortcut.cc
similarity index 90%
rename from devel/electron11/files/patch-chrome_browser_web__applications_components_web__app__shortcut.cc
rename to devel/electron12/files/patch-chrome_browser_web__applications_components_web__app__shortcut.cc
index 4706a75e9ef2f9e130db616d456d5316ba48076a..65bbb0ec5f65009726600a49105d8ca1a6de1920 100644
--- a/devel/electron11/files/patch-chrome_browser_web__applications_components_web__app__shortcut.cc
+++ b/devel/electron12/files/patch-chrome_browser_web__applications_components_web__app__shortcut.cc
@@ -1,6 +1,6 @@
---- chrome/browser/web_applications/components/web_app_shortcut.cc.orig	2021-01-07 00:36:25 UTC
+--- chrome/browser/web_applications/components/web_app_shortcut.cc.orig	2021-04-14 01:08:42 UTC
 +++ chrome/browser/web_applications/components/web_app_shortcut.cc
-@@ -34,7 +34,7 @@ namespace {
+@@ -33,7 +33,7 @@ namespace {
  
  #if defined(OS_MAC)
  const int kDesiredIconSizesForShortcut[] = {16, 32, 128, 256, 512};
diff --git a/devel/electron12/files/patch-chrome_browser_web__applications_extensions_bookmark__app__finalizer__utils.cc b/devel/electron12/files/patch-chrome_browser_web__applications_extensions_bookmark__app__finalizer__utils.cc
new file mode 100644
index 0000000000000000000000000000000000000000..ae050ac785c06cee760cb98f5f8471ddc1bede41
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_browser_web__applications_extensions_bookmark__app__finalizer__utils.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/web_applications/extensions/bookmark_app_finalizer_utils.cc.orig	2021-04-14 01:08:42 UTC
++++ chrome/browser/web_applications/extensions/bookmark_app_finalizer_utils.cc
+@@ -18,7 +18,7 @@ namespace {
+ bool CanOsAddDesktopShortcuts() {
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_WIN)
++#if (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_WIN) || defined(OS_BSD)
+   return true;
+ #else
+   return false;
diff --git a/devel/electron11/files/patch-chrome_common_BUILD.gn b/devel/electron12/files/patch-chrome_common_BUILD.gn
similarity index 75%
rename from devel/electron11/files/patch-chrome_common_BUILD.gn
rename to devel/electron12/files/patch-chrome_common_BUILD.gn
index 87947ce844be7c802fe4ac480f5898ea49c920f2..66f8896eab9a8276b07a42c98cd44502567aa6b7 100644
--- a/devel/electron11/files/patch-chrome_common_BUILD.gn
+++ b/devel/electron12/files/patch-chrome_common_BUILD.gn
@@ -1,6 +1,6 @@
---- chrome/common/BUILD.gn.orig	2021-01-07 00:36:25 UTC
+--- chrome/common/BUILD.gn.orig	2021-04-14 01:08:42 UTC
 +++ chrome/common/BUILD.gn
-@@ -250,6 +250,10 @@ static_library("common") {
+@@ -251,6 +251,10 @@ static_library("common") {
      public_deps += [ "//ppapi/shared_impl" ]
    }
  
@@ -10,8 +10,8 @@
 +
    if (enable_extensions) {
      sources += [
-       "cast_messages.cc",
-@@ -487,7 +491,7 @@ static_library("common") {
+       "extensions/api/commands/commands_handler.cc",
+@@ -481,13 +485,21 @@ static_library("common") {
      public_deps += [ "//chrome/common/safe_browsing" ]
    }
  
@@ -20,7 +20,6 @@
      sources += [
        "auto_start_linux.cc",
        "auto_start_linux.h",
-@@ -496,6 +500,14 @@ static_library("common") {
        "multi_process_lock_linux.cc",
      ]
      deps += [ "//sandbox/linux:sandbox_services" ]
diff --git a/devel/electron12/files/patch-chrome_common_channel__info.h b/devel/electron12/files/patch-chrome_common_channel__info.h
new file mode 100644
index 0000000000000000000000000000000000000000..2c8331a19d1729d1cdf983caa7045a0e187a246e
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_common_channel__info.h
@@ -0,0 +1,11 @@
+--- chrome/common/channel_info.h.orig	2021-04-14 01:08:42 UTC
++++ chrome/common/channel_info.h
+@@ -70,7 +70,7 @@ std::string GetChannelSuffixForDataDir();
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // Returns the channel-specific filename of the desktop shortcut used to launch
+ // the browser.
+ std::string GetDesktopName(base::Environment* env);
diff --git a/devel/electron12/files/patch-chrome_common_channel__info__posix.cc b/devel/electron12/files/patch-chrome_common_channel__info__posix.cc
new file mode 100644
index 0000000000000000000000000000000000000000..e44c70a0dde3ca917606124c216f85928f56e140
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_common_channel__info__posix.cc
@@ -0,0 +1,20 @@
+--- chrome/common/channel_info_posix.cc.orig	2021-04-14 01:08:42 UTC
++++ chrome/common/channel_info_posix.cc
+@@ -70,7 +70,7 @@ std::string GetChannelSuffixForDataDir() {
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ std::string GetDesktopName(base::Environment* env) {
+ #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
+   // Google Chrome packaged as a snap is a special case: the application name
+@@ -99,7 +99,7 @@ std::string GetDesktopName(base::Environment* env) {
+   return "chromium-browser.desktop";
+ #endif
+ }
+-#endif  // defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#endif  // defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ 
+ version_info::Channel GetChannel() {
+   return GetChannelImpl(nullptr);
diff --git a/devel/electron11/files/patch-chrome_common_chrome__features.cc b/devel/electron12/files/patch-chrome_common_chrome__features.cc
similarity index 56%
rename from devel/electron11/files/patch-chrome_common_chrome__features.cc
rename to devel/electron12/files/patch-chrome_common_chrome__features.cc
index 1a916d6d1d43fb0eef7e2e7462fc97805954f15b..7b30a6e320eaca9a88ab3ffa8105a9a76f4e4fa5 100644
--- a/devel/electron11/files/patch-chrome_common_chrome__features.cc
+++ b/devel/electron12/files/patch-chrome_common_chrome__features.cc
@@ -1,6 +1,6 @@
---- chrome/common/chrome_features.cc.orig	2021-01-07 00:36:25 UTC
+--- chrome/common/chrome_features.cc.orig	2021-04-14 01:08:42 UTC
 +++ chrome/common/chrome_features.cc
-@@ -96,13 +96,13 @@ const base::Feature kAsyncDns {
+@@ -92,13 +92,13 @@ const base::Feature kAsyncDns {
  #endif
  };
  
@@ -14,20 +14,21 @@
 -#endif  // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
 +#endif  // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
- #if defined(OS_CHROMEOS)
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
  // Enable Borealis on Chrome OS.
-@@ -337,12 +337,12 @@ const base::Feature kEnableAmbientAuthenticationInInco
-     "EnableAmbientAuthenticationInIncognito",
-     base::FEATURE_DISABLED_BY_DEFAULT};
+@@ -348,13 +348,13 @@ const base::Feature kEnableAllSystemWebApps{"EnableAll
  
--#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MAC)
-+#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MAC) || defined(OS_BSD)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_WIN) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || \
++#if defined(OS_WIN) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD) || \
+     defined(OS_MAC)
  COMPONENT_EXPORT(CHROME_FEATURES)
  // Enables ephemeral Guest profiles on desktop.
  extern const base::Feature kEnableEphemeralGuestProfilesOnDesktop{
      "EnableEphemeralGuestProfilesOnDesktop", base::FEATURE_DISABLED_BY_DEFAULT};
--#endif  // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MAC)
-+#endif  // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MAC) || defined(OS_BSD)
+-#endif  // defined(OS_WIN) || (defined(OS_LINUX) ||
++#endif  // defined(OS_WIN) || (defined(OS_LINUX) || defined(OS_BSD) ||
+         // BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_MAC)
  
  #if defined(OS_WIN)
- // Enables users to create a desktop shortcut for incognito mode.
diff --git a/devel/electron11/files/patch-chrome_common_chrome__features.h b/devel/electron12/files/patch-chrome_common_chrome__features.h
similarity index 50%
rename from devel/electron11/files/patch-chrome_common_chrome__features.h
rename to devel/electron12/files/patch-chrome_common_chrome__features.h
index 2e9e5c4fae8d9ad6266f0384ac030b3241d56d00..0cf265346a36078f140d2570974accd1759ea204 100644
--- a/devel/electron11/files/patch-chrome_common_chrome__features.h
+++ b/devel/electron12/files/patch-chrome_common_chrome__features.h
@@ -1,6 +1,6 @@
---- chrome/common/chrome_features.h.orig	2021-01-07 00:36:25 UTC
+--- chrome/common/chrome_features.h.orig	2021-04-14 01:08:42 UTC
 +++ chrome/common/chrome_features.h
-@@ -82,10 +82,10 @@ extern const base::Feature kAppShimNewCloseBehavior;
+@@ -78,10 +78,10 @@ extern const base::Feature kAppShimNewCloseBehavior;
  
  COMPONENT_EXPORT(CHROME_FEATURES) extern const base::Feature kAsyncDns;
  
@@ -11,18 +11,19 @@
 -#endif  // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
 +#endif  // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
- #if defined(OS_CHROMEOS)
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
  COMPONENT_EXPORT(CHROME_FEATURES) extern const base::Feature kBorealis;
-@@ -214,10 +214,10 @@ extern const base::Feature kEnableAmbientAuthenticatio
- COMPONENT_EXPORT(CHROME_FEATURES)
- extern const base::Feature kEnableAmbientAuthenticationInIncognito;
+@@ -230,11 +230,11 @@ extern const base::Feature kEnableAmbientAuthenticatio
  
--#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MAC)
-+#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MAC) || defined(OS_BSD)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_WIN) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || \
++#if defined(OS_WIN) || (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD) || \
+     defined(OS_MAC)
  COMPONENT_EXPORT(CHROME_FEATURES)
  extern const base::Feature kEnableEphemeralGuestProfilesOnDesktop;
--#endif  // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MAC)
-+#endif  // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MAC) || defined(OS_BSD)
+-#endif  // defined(OS_WIN) || (defined(OS_LINUX) ||
++#endif  // defined(OS_WIN) || (defined(OS_LINUX) || defined(OS_BSD) ||
+         // BUILDFLAG(IS_CHROMEOS_LACROS)) ||  defined(OS_MAC)
  
  #if defined(OS_WIN)
- COMPONENT_EXPORT(CHROME_FEATURES)
diff --git a/devel/electron11/files/patch-chrome_common_chrome__paths.cc b/devel/electron12/files/patch-chrome_common_chrome__paths.cc
similarity index 75%
rename from devel/electron11/files/patch-chrome_common_chrome__paths.cc
rename to devel/electron12/files/patch-chrome_common_chrome__paths.cc
index f469224dd13d07baa5d356023cd61e79547d9f4f..d3ed8db230de5c899b0745f9b2fb78b45524d49a 100644
--- a/devel/electron11/files/patch-chrome_common_chrome__paths.cc
+++ b/devel/electron12/files/patch-chrome_common_chrome__paths.cc
@@ -1,8 +1,8 @@
---- chrome/common/chrome_paths.cc.orig	2021-01-07 00:36:25 UTC
+--- chrome/common/chrome_paths.cc.orig	2021-04-14 01:08:42 UTC
 +++ chrome/common/chrome_paths.cc
-@@ -52,21 +52,29 @@ const base::FilePath::CharType kPepperFlashSystemBaseD
-     FILE_PATH_LITERAL("Internet Plug-Ins/PepperFlashPlayer");
- #endif
+@@ -48,21 +48,29 @@ namespace {
+ const base::FilePath::CharType kPepperFlashBaseDirectory[] =
+     FILE_PATH_LITERAL("PepperFlash");
  
 -#if defined(OS_LINUX) || defined(OS_CHROMEOS)
 +#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
@@ -32,7 +32,7 @@
  
  #if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && \
      BUILDFLAG(ENABLE_WIDEVINE_CDM_COMPONENT)
-@@ -207,7 +215,7 @@ bool PathProvider(int key, base::FilePath* result) {
+@@ -183,7 +191,7 @@ bool PathProvider(int key, base::FilePath* result) {
          return false;
        break;
      case chrome::DIR_DEFAULT_DOWNLOADS_SAFE:
@@ -41,7 +41,7 @@
        if (!GetUserDownloadsDirectorySafe(&cur))
          return false;
        break;
-@@ -494,6 +502,9 @@ bool PathProvider(int key, base::FilePath* result) {
+@@ -447,6 +455,9 @@ bool PathProvider(int key, base::FilePath* result) {
      case chrome::DIR_POLICY_FILES: {
  #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
        cur = base::FilePath(FILE_PATH_LITERAL("/etc/opt/chrome/policies"));
@@ -51,16 +51,20 @@
  #else
        cur = base::FilePath(FILE_PATH_LITERAL("/etc/chromium/policies"));
  #endif
-@@ -501,7 +512,7 @@ bool PathProvider(int key, base::FilePath* result) {
-     }
+@@ -455,9 +466,9 @@ bool PathProvider(int key, base::FilePath* result) {
  #endif
- #if defined(OS_CHROMEOS) || \
--    (defined(OS_LINUX) && BUILDFLAG(CHROMIUM_BRANDING)) || defined(OS_MAC)
-+    (defined(OS_LINUX) && BUILDFLAG(CHROMIUM_BRANDING)) || defined(OS_MAC) || defined(OS_BSD)
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if defined(OS_CHROMEOS) ||                                  \
+-    ((defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) && \
+-     BUILDFLAG(CHROMIUM_BRANDING)) ||                        \
++#if defined(OS_CHROMEOS) ||                                                    \
++    ((defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)) && \
++     BUILDFLAG(CHROMIUM_BRANDING)) ||                                           \
+     defined(OS_MAC)
      case chrome::DIR_USER_EXTERNAL_EXTENSIONS: {
        if (!base::PathService::Get(chrome::DIR_USER_DATA, &cur))
-         return false;
-@@ -509,7 +520,7 @@ bool PathProvider(int key, base::FilePath* result) {
+@@ -466,7 +477,7 @@ bool PathProvider(int key, base::FilePath* result) {
        break;
      }
  #endif
@@ -69,7 +73,7 @@
      case chrome::DIR_STANDALONE_EXTERNAL_EXTENSIONS: {
        cur = base::FilePath(kFilepathSinglePrefExtensions);
        break;
-@@ -544,7 +555,7 @@ bool PathProvider(int key, base::FilePath* result) {
+@@ -501,7 +512,7 @@ bool PathProvider(int key, base::FilePath* result) {
  #endif
        break;
  
@@ -78,7 +82,7 @@
      case chrome::DIR_NATIVE_MESSAGING:
  #if defined(OS_MAC)
  #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
-@@ -558,6 +569,9 @@ bool PathProvider(int key, base::FilePath* result) {
+@@ -515,6 +526,9 @@ bool PathProvider(int key, base::FilePath* result) {
  #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
        cur = base::FilePath(FILE_PATH_LITERAL(
            "/etc/opt/chrome/native-messaging-hosts"));
@@ -88,7 +92,7 @@
  #else
        cur = base::FilePath(FILE_PATH_LITERAL(
            "/etc/chromium/native-messaging-hosts"));
-@@ -570,7 +584,7 @@ bool PathProvider(int key, base::FilePath* result) {
+@@ -527,7 +541,7 @@ bool PathProvider(int key, base::FilePath* result) {
          return false;
        cur = cur.Append(FILE_PATH_LITERAL("NativeMessagingHosts"));
        break;
diff --git a/devel/electron11/files/patch-chrome_common_chrome__paths.h b/devel/electron12/files/patch-chrome_common_chrome__paths.h
similarity index 53%
rename from devel/electron11/files/patch-chrome_common_chrome__paths.h
rename to devel/electron12/files/patch-chrome_common_chrome__paths.h
index d43ae56079ad5dbe56da23dba3df40bc403631f4..4466d6d52da8c03b2544c1a3ac70f2ac715eaf8e 100644
--- a/devel/electron11/files/patch-chrome_common_chrome__paths.h
+++ b/devel/electron12/files/patch-chrome_common_chrome__paths.h
@@ -1,15 +1,19 @@
---- chrome/common/chrome_paths.h.orig	2021-01-07 00:36:25 UTC
+--- chrome/common/chrome_paths.h.orig	2021-04-14 01:08:42 UTC
 +++ chrome/common/chrome_paths.h
-@@ -51,7 +51,7 @@ enum {
-                      // contains subdirectories.
+@@ -53,9 +53,9 @@ enum {
  #endif
- #if defined(OS_CHROMEOS) || \
--    (defined(OS_LINUX) && BUILDFLAG(CHROMIUM_BRANDING)) || defined(OS_MAC)
-+    (defined(OS_LINUX) && BUILDFLAG(CHROMIUM_BRANDING)) || defined(OS_MAC) || defined(OS_BSD)
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if defined(OS_CHROMEOS) ||                                  \
+-    ((defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) && \
+-     BUILDFLAG(CHROMIUM_BRANDING)) ||                        \
++#if defined(OS_CHROMEOS) ||                                                     \
++    ((defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)) && \
++     BUILDFLAG(CHROMIUM_BRANDING)) ||                                           \
+     defined(OS_MAC)
    DIR_USER_EXTERNAL_EXTENSIONS,  // Directory for per-user external extensions
                                   // on Chrome Mac and Chromium Linux.
-                                  // On Chrome OS, this path is used for OEM
-@@ -59,7 +59,7 @@ enum {
+@@ -64,7 +64,7 @@ enum {
                                   // create it.
  #endif
  
@@ -18,10 +22,10 @@
    DIR_STANDALONE_EXTERNAL_EXTENSIONS,  // Directory for 'per-extension'
                                         // definition manifest files that
                                         // describe extensions which are to be
-@@ -120,7 +120,7 @@ enum {
-   DIR_SUPERVISED_USER_INSTALLED_WHITELISTS,  // Directory where sanitized
-                                              // supervised user whitelists are
-                                              // installed.
+@@ -118,7 +118,7 @@ enum {
+   DIR_CHROMEOS_CUSTOM_WALLPAPERS,     // Directory where custom wallpapers
+                                       // reside.
+ #endif
 -#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
 +#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
    DIR_NATIVE_MESSAGING,       // System directory where native messaging host
diff --git a/devel/electron11/files/patch-chrome_common_chrome__paths__internal.h b/devel/electron12/files/patch-chrome_common_chrome__paths__internal.h
similarity index 100%
rename from devel/electron11/files/patch-chrome_common_chrome__paths__internal.h
rename to devel/electron12/files/patch-chrome_common_chrome__paths__internal.h
diff --git a/devel/electron11/files/patch-chrome_common_chrome__switches.cc b/devel/electron12/files/patch-chrome_common_chrome__switches.cc
similarity index 74%
rename from devel/electron11/files/patch-chrome_common_chrome__switches.cc
rename to devel/electron12/files/patch-chrome_common_chrome__switches.cc
index 8da0067a392a1d3087c024c0ac37cd593f5981bc..c863e250a16a15736c1809d7e98ac3a4b379c6a3 100644
--- a/devel/electron11/files/patch-chrome_common_chrome__switches.cc
+++ b/devel/electron12/files/patch-chrome_common_chrome__switches.cc
@@ -1,6 +1,6 @@
---- chrome/common/chrome_switches.cc.orig	2021-01-07 00:36:25 UTC
+--- chrome/common/chrome_switches.cc.orig	2021-04-14 01:08:42 UTC
 +++ chrome/common/chrome_switches.cc
-@@ -808,7 +808,7 @@ const char kAllowNaClFileHandleAPI[]        = "allow-n
+@@ -810,7 +810,7 @@ const char kAllowNaClFileHandleAPI[]        = "allow-n
  const char kAllowNaClSocketAPI[]            = "allow-nacl-socket-api";
  #endif
  
diff --git a/devel/electron11/files/patch-chrome_common_chrome__switches.h b/devel/electron12/files/patch-chrome_common_chrome__switches.h
similarity index 72%
rename from devel/electron11/files/patch-chrome_common_chrome__switches.h
rename to devel/electron12/files/patch-chrome_common_chrome__switches.h
index 28d721f47a048b115e8b8b227172cde56dba69d9..54910bcf6d7433de8f6fe86d24044bb8404ef0c1 100644
--- a/devel/electron11/files/patch-chrome_common_chrome__switches.h
+++ b/devel/electron12/files/patch-chrome_common_chrome__switches.h
@@ -1,6 +1,6 @@
---- chrome/common/chrome_switches.h.orig	2021-01-07 00:36:25 UTC
+--- chrome/common/chrome_switches.h.orig	2021-04-14 01:08:42 UTC
 +++ chrome/common/chrome_switches.h
-@@ -253,7 +253,7 @@ extern const char kAllowNaClFileHandleAPI[];
+@@ -255,7 +255,7 @@ extern const char kAllowNaClFileHandleAPI[];
  extern const char kAllowNaClSocketAPI[];
  #endif
  
diff --git a/devel/electron12/files/patch-chrome_common_extensions_command.cc b/devel/electron12/files/patch-chrome_common_extensions_command.cc
new file mode 100644
index 0000000000000000000000000000000000000000..0017b7cb876e4ac43fdbd4948c9aa4b1dd5d8cef
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_common_extensions_command.cc
@@ -0,0 +1,11 @@
+--- chrome/common/extensions/command.cc.orig	2021-04-14 01:08:42 UTC
++++ chrome/common/extensions/command.cc
+@@ -294,7 +294,7 @@ std::string Command::CommandPlatform() {
+   return values::kKeybindingPlatformMac;
+ #elif BUILDFLAG(IS_CHROMEOS_ASH)
+   return values::kKeybindingPlatformChromeOs;
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   return values::kKeybindingPlatformLinux;
+ #else
+   return "";
diff --git a/devel/electron11/files/patch-chrome_common_features.gni b/devel/electron12/files/patch-chrome_common_features.gni
similarity index 65%
rename from devel/electron11/files/patch-chrome_common_features.gni
rename to devel/electron12/files/patch-chrome_common_features.gni
index 1cdd1823f808aaab73cd5869c129b0a64d65ffdc..f78fa86dd535ce1fadd0be505d49cad5ec09e6f3 100644
--- a/devel/electron11/files/patch-chrome_common_features.gni
+++ b/devel/electron12/files/patch-chrome_common_features.gni
@@ -1,8 +1,8 @@
---- chrome/common/features.gni.orig	2021-01-07 00:36:26 UTC
+--- chrome/common/features.gni.orig	2021-04-14 01:08:42 UTC
 +++ chrome/common/features.gni
-@@ -51,7 +51,7 @@ declare_args() {
+@@ -54,7 +54,7 @@ declare_args() {
    enable_one_click_signin =
-       is_win || is_mac || (is_linux && !is_chromeos && !is_chromecast)
+       is_win || is_mac || ((is_linux || is_chromeos_lacros) && !is_chromecast)
  
 -  enable_service_discovery = (enable_mdns && !is_android) || is_mac
 +  enable_service_discovery = (enable_mdns && !is_android) || is_mac || is_bsd
diff --git a/devel/electron11/files/patch-chrome_common_pref__names.cc b/devel/electron12/files/patch-chrome_common_pref__names.cc
similarity index 56%
rename from devel/electron11/files/patch-chrome_common_pref__names.cc
rename to devel/electron12/files/patch-chrome_common_pref__names.cc
index c2246e0fc9666aefbe45674e535189c72b468165..9af55a074f04f97ccc6877e6feab362f57648b14 100644
--- a/devel/electron11/files/patch-chrome_common_pref__names.cc
+++ b/devel/electron12/files/patch-chrome_common_pref__names.cc
@@ -1,24 +1,24 @@
---- chrome/common/pref_names.cc.orig	2021-01-07 00:36:26 UTC
+--- chrome/common/pref_names.cc.orig	2021-04-14 01:08:42 UTC
 +++ chrome/common/pref_names.cc
-@@ -1076,7 +1076,7 @@ const char kForceYouTubeRestrict[] = "settings.force_y
- // only using an account that belongs to one of the domains from this pref.
- const char kAllowedDomainsForApps[] = "settings.allowed_domains_for_apps";
+@@ -1099,7 +1099,7 @@ const char kAllowedDomainsForApps[] = "settings.allowe
  
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
  // Linux specific preference on whether we should match the system theme.
  const char kUsesSystemTheme[] = "extensions.theme.use_system";
  #endif
-@@ -1238,7 +1238,7 @@ const char kShowUpdatePromotionInfoBar[] =
-     "browser.show_update_promotion_info_bar";
- #endif
+@@ -1274,7 +1274,7 @@ const char kShowUpdatePromotionInfoBar[] =
  
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
  // Boolean that is false if we should show window manager decorations.  If
  // true, we draw a custom chrome frame (thicker title bar and blue border).
  const char kUseCustomChromeFrame[] = "browser.custom_chrome_frame";
-@@ -1685,7 +1685,7 @@ const char kDownloadDefaultDirectory[] = "download.def
+@@ -1726,7 +1726,7 @@ const char kDownloadDefaultDirectory[] = "download.def
  // upgrade a unsafe location to a safe location.
  const char kDownloadDirUpgraded[] = "download.directory_upgrade";
  
@@ -27,9 +27,9 @@
      defined(OS_MAC)
  const char kOpenPdfDownloadInSystemReader[] =
      "download.open_pdf_in_system_reader";
-@@ -2027,12 +2027,12 @@ const char kGloballyScopeHTTPAuthCacheEnabled[] =
- const char kAmbientAuthenticationInPrivateModesEnabled[] =
-     "auth.ambient_auth_in_private_modes";
+@@ -2103,12 +2103,12 @@ const char kAmbientAuthenticationInPrivateModesEnabled
+ // requests.
+ const char kBasicAuthOverHttpEnabled[] = "auth.basic_over_http_enabled";
  
 -#if defined(OS_LINUX) || defined(OS_MAC) || defined(OS_CHROMEOS)
 +#if defined(OS_LINUX) || defined(OS_MAC) || defined(OS_CHROMEOS) || defined(OS_BSD)
@@ -42,12 +42,12 @@
  
  #if defined(OS_POSIX)
  // Boolean that specifies whether NTLMv2 is enabled.
-@@ -2931,7 +2931,7 @@ const char kAutoplayWhitelist[] = "media.autoplay_whit
- const char kBlockAutoplayEnabled[] = "media.block_autoplay";
- #endif  // !defined(OS_ANDROID)
+@@ -3001,7 +3001,7 @@ const char kBlockAutoplayEnabled[] = "media.block_auto
  
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
  // Boolean that indicates if native notifications are allowed to be used in
  // place of Chrome notifications.
  const char kAllowNativeNotifications[] = "native_notifications.allowed";
diff --git a/devel/electron11/files/patch-chrome_common_pref__names.h b/devel/electron12/files/patch-chrome_common_pref__names.h
similarity index 50%
rename from devel/electron11/files/patch-chrome_common_pref__names.h
rename to devel/electron12/files/patch-chrome_common_pref__names.h
index 4c341aa76adaed8e6d87751c0d283779b53db41b..9b953c1408a2f646473de8a22ff9ed167ffaa82c 100644
--- a/devel/electron11/files/patch-chrome_common_pref__names.h
+++ b/devel/electron12/files/patch-chrome_common_pref__names.h
@@ -1,24 +1,24 @@
---- chrome/common/pref_names.h.orig	2021-01-07 00:36:26 UTC
+--- chrome/common/pref_names.h.orig	2021-04-14 01:08:42 UTC
 +++ chrome/common/pref_names.h
-@@ -355,7 +355,7 @@ extern const char kHistoryMenuPromoShown[];
- extern const char kForceGoogleSafeSearch[];
- extern const char kForceYouTubeRestrict[];
+@@ -364,7 +364,7 @@ extern const char kForceYouTubeRestrict[];
  extern const char kAllowedDomainsForApps[];
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
  extern const char kUsesSystemTheme[];
  #endif
  extern const char kCurrentThemePackFilename[];
-@@ -385,7 +385,7 @@ extern const char kDefaultBrowserSettingEnabled[];
- #if defined(OS_MAC)
- extern const char kShowUpdatePromotionInfoBar[];
+@@ -393,7 +393,7 @@ extern const char kShowUpdatePromotionInfoBar[];
  #endif
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
  extern const char kUseCustomChromeFrame[];
  #endif
  #if BUILDFLAG(ENABLE_PLUGINS)
-@@ -554,7 +554,7 @@ extern const char kDownloadExtensionsToOpen[];
+@@ -564,7 +564,7 @@ extern const char kDownloadExtensionsToOpen[];
  extern const char kDownloadExtensionsToOpenByPolicy[];
  extern const char kDownloadAllowedURLsForOpenByPolicy[];
  extern const char kDownloadDirUpgraded[];
@@ -27,9 +27,9 @@
      defined(OS_MAC)
  extern const char kOpenPdfDownloadInSystemReader[];
  #endif
-@@ -777,9 +777,9 @@ extern const char kAllowCrossOriginAuthPrompt[];
- extern const char kGloballyScopeHTTPAuthCacheEnabled[];
+@@ -795,9 +795,9 @@ extern const char kGloballyScopeHTTPAuthCacheEnabled[]
  extern const char kAmbientAuthenticationInPrivateModesEnabled[];
+ extern const char kBasicAuthOverHttpEnabled[];
  
 -#if defined(OS_LINUX) || defined(OS_MAC) || defined(OS_CHROMEOS)
 +#if defined(OS_LINUX) || defined(OS_MAC) || defined(OS_CHROMEOS) || defined(OS_BSD)
@@ -39,12 +39,12 @@
  
  #if defined(OS_POSIX)
  extern const char kNtlmV2Enabled[];
-@@ -1006,7 +1006,7 @@ extern const char kAutoplayWhitelist[];
- extern const char kBlockAutoplayEnabled[];
- #endif
+@@ -1028,7 +1028,7 @@ extern const char kBlockAutoplayEnabled[];
  
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
  extern const char kAllowNativeNotifications[];
  #endif
  
diff --git a/devel/electron11/files/patch-chrome_common_webui__url__constants.cc b/devel/electron12/files/patch-chrome_common_webui__url__constants.cc
similarity index 52%
rename from devel/electron11/files/patch-chrome_common_webui__url__constants.cc
rename to devel/electron12/files/patch-chrome_common_webui__url__constants.cc
index 28f7a32a20af7b1abba25b754a854ad230f6cd29..dd16793b4ab1d2f2f6499e643e0b3e4e76555671 100644
--- a/devel/electron11/files/patch-chrome_common_webui__url__constants.cc
+++ b/devel/electron12/files/patch-chrome_common_webui__url__constants.cc
@@ -1,15 +1,21 @@
---- chrome/common/webui_url_constants.cc.orig	2021-01-07 00:36:26 UTC
+--- chrome/common/webui_url_constants.cc.orig	2021-04-14 01:08:42 UTC
 +++ chrome/common/webui_url_constants.cc
-@@ -338,7 +338,7 @@ bool IsSystemWebUIHost(base::StringPiece host) {
+@@ -343,12 +343,12 @@ bool IsSystemWebUIHost(base::StringPiece host) {
  }
- #endif  // defined(OS_CHROMEOS)
+ #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ const char kChromeUIWebUIJsErrorHost[] = "webuijserror";
+ const char kChromeUIWebUIJsErrorURL[] = "chrome://webuijserror/";
+ #endif
  
 -#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
 +#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD) || \
      defined(OS_CHROMEOS)
  const char kChromeUIDiscardsHost[] = "discards";
  const char kChromeUIDiscardsURL[] = "chrome://discards/";
-@@ -360,18 +360,18 @@ const char kChromeUINearbyShareURL[] = "chrome://nearb
+@@ -365,7 +365,7 @@ const char kChromeUINearbyShareURL[] = "chrome://nearb
  const char kChromeUILinuxProxyConfigHost[] = "linux-proxy-config";
  #endif
  
@@ -18,20 +24,25 @@
      defined(OS_ANDROID)
  const char kChromeUISandboxHost[] = "sandbox";
  #endif
- 
+@@ -373,7 +373,7 @@ const char kChromeUISandboxHost[] = "sandbox";
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
  #if defined(OS_WIN) || defined(OS_MAC) || \
--    (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+-    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
  const char kChromeUIBrowserSwitchHost[] = "browser-switch";
  const char kChromeUIBrowserSwitchURL[] = "chrome://browser-switch/";
+ const char kChromeUIProfileCustomizationHost[] = "profile-customization";
+@@ -384,7 +384,7 @@ const char kChromeUIProfilePickerUrl[] = "chrome://pro
+ const char kChromeUIProfilePickerStartupQuery[] = "startup";
  #endif
  
 -#if ((defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(TOOLKIT_VIEWS)) || \
-+#if ((defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && defined(TOOLKIT_VIEWS)) || \
++#if ((defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(TOOLKIT_VIEWS)) || defined(OS_BSD) || \
      defined(USE_AURA)
  const char kChromeUITabModalConfirmDialogHost[] = "tab-modal-confirm-dialog";
  #endif
-@@ -542,14 +542,14 @@ const char* const kChromeHostURLs[] = {
+@@ -553,14 +553,14 @@ const char* const kChromeHostURLs[] = {
      kChromeUIInternetDetailDialogHost,
      kChromeUIAssistantOptInHost,
  #endif
@@ -48,3 +59,12 @@
      defined(OS_ANDROID)
      kChromeUISandboxHost,
  #endif
+@@ -619,7 +619,7 @@ const char* const kChromeDebugURLs[] = {
+     content::kChromeUIGpuJavaCrashURL,
+     kChromeUIJavaCrashURL,
+ #endif
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+     kChromeUIWebUIJsErrorURL,
+ #endif
+     kChromeUIQuitURL,
diff --git a/devel/electron12/files/patch-chrome_common_webui__url__constants.h b/devel/electron12/files/patch-chrome_common_webui__url__constants.h
new file mode 100644
index 0000000000000000000000000000000000000000..0961d33d2ade8c9a97ac73f63d714982df27f933
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_common_webui__url__constants.h
@@ -0,0 +1,44 @@
+--- chrome/common/webui_url_constants.h.orig	2021-04-14 01:08:42 UTC
++++ chrome/common/webui_url_constants.h
+@@ -295,12 +295,12 @@ bool IsSystemWebUIHost(base::StringPiece host);
+ 
+ #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ extern const char kChromeUIWebUIJsErrorHost[];
+ extern const char kChromeUIWebUIJsErrorURL[];
+ #endif
+ 
+-#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD) || \
+     defined(OS_CHROMEOS)
+ extern const char kChromeUIDiscardsHost[];
+ extern const char kChromeUIDiscardsURL[];
+@@ -317,7 +317,7 @@ extern const char kChromeUINearbyShareURL[];
+ extern const char kChromeUILinuxProxyConfigHost[];
+ #endif
+ 
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) || \
+     defined(OS_ANDROID)
+ extern const char kChromeUISandboxHost[];
+ #endif
+@@ -325,7 +325,7 @@ extern const char kChromeUISandboxHost[];
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+ #if defined(OS_WIN) || defined(OS_MAC) || \
+-    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+ extern const char kChromeUIBrowserSwitchHost[];
+ extern const char kChromeUIBrowserSwitchURL[];
+ extern const char kChromeUIProfileCustomizationHost[];
+@@ -335,7 +335,7 @@ extern const char kChromeUIProfilePickerUrl[];
+ extern const char kChromeUIProfilePickerStartupQuery[];
+ #endif
+ 
+-#if ((defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(TOOLKIT_VIEWS)) || \
++#if ((defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(TOOLKIT_VIEWS)) || defined(OS_BSD) || \
+     defined(USE_AURA)
+ extern const char kChromeUITabModalConfirmDialogHost[];
+ #endif
diff --git a/devel/electron11/files/patch-chrome_renderer_chrome__content__renderer__client.cc b/devel/electron12/files/patch-chrome_renderer_chrome__content__renderer__client.cc
similarity index 84%
rename from devel/electron11/files/patch-chrome_renderer_chrome__content__renderer__client.cc
rename to devel/electron12/files/patch-chrome_renderer_chrome__content__renderer__client.cc
index 69e7e9bc4c14702e95f8df90fba0c69bf48df454..967e0fd92c83056dbcea01199caf0d5894f676cc 100644
--- a/devel/electron11/files/patch-chrome_renderer_chrome__content__renderer__client.cc
+++ b/devel/electron12/files/patch-chrome_renderer_chrome__content__renderer__client.cc
@@ -1,6 +1,6 @@
---- chrome/renderer/chrome_content_renderer_client.cc.orig	2021-01-25 11:27:00 UTC
+--- chrome/renderer/chrome_content_renderer_client.cc.orig	2021-04-22 07:51:50 UTC
 +++ chrome/renderer/chrome_content_renderer_client.cc
-@@ -1085,7 +1085,7 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin(
+@@ -1097,7 +1097,7 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin(
        }
  
        case chrome::mojom::PluginStatus::kRestartRequired: {
diff --git a/devel/electron11/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc b/devel/electron12/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc
similarity index 89%
rename from devel/electron11/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc
rename to devel/electron12/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc
index 731557dc6ef5a7ac8fd2fa8936c70b43928636f4..2b61cd11f38898adb1c13ae986ca2c1f261cf60c 100644
--- a/devel/electron11/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc
+++ b/devel/electron12/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc
@@ -1,6 +1,6 @@
---- chrome/renderer/pepper/pepper_flash_font_file_host.cc.orig	2021-01-07 00:36:26 UTC
+--- chrome/renderer/pepper/pepper_flash_font_file_host.cc.orig	2021-04-14 01:08:42 UTC
 +++ chrome/renderer/pepper/pepper_flash_font_file_host.cc
-@@ -15,7 +15,7 @@
+@@ -16,7 +16,7 @@
  #include "ppapi/proxy/ppapi_messages.h"
  #include "ppapi/proxy/serialized_structs.h"
  
@@ -9,7 +9,7 @@
  #include "components/services/font/public/cpp/font_loader.h"
  #include "content/public/common/common_sandbox_support_linux.h"
  #elif defined(OS_WIN)
-@@ -29,7 +29,7 @@ PepperFlashFontFileHost::PepperFlashFontFileHost(
+@@ -30,7 +30,7 @@ PepperFlashFontFileHost::PepperFlashFontFileHost(
      const ppapi::proxy::SerializedFontDescription& description,
      PP_PrivateFontCharset charset)
      : ResourceHost(host->GetPpapiHost(), instance, resource) {
@@ -18,7 +18,7 @@
    // The global SkFontConfigInterface is configured and initialized with a
    // SkFontconfigInterface compatible font_service::FontLoader in
    // RendererBlinkPlatformImpl (called from RenderThreadImpl::Init) at startup
-@@ -74,7 +74,7 @@ bool PepperFlashFontFileHost::GetFontData(uint32_t tab
+@@ -75,7 +75,7 @@ bool PepperFlashFontFileHost::GetFontData(uint32_t tab
                                            void* buffer,
                                            size_t* length) {
    bool result = false;
diff --git a/devel/electron11/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.h b/devel/electron12/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.h
similarity index 100%
rename from devel/electron11/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.h
rename to devel/electron12/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.h
diff --git a/devel/electron11/files/patch-chrome_service_cloud__print_print__system.cc b/devel/electron12/files/patch-chrome_service_cloud__print_print__system.cc
similarity index 100%
rename from devel/electron11/files/patch-chrome_service_cloud__print_print__system.cc
rename to devel/electron12/files/patch-chrome_service_cloud__print_print__system.cc
diff --git a/devel/electron11/files/patch-chrome_test_BUILD.gn b/devel/electron12/files/patch-chrome_test_BUILD.gn
similarity index 71%
rename from devel/electron11/files/patch-chrome_test_BUILD.gn
rename to devel/electron12/files/patch-chrome_test_BUILD.gn
index 2c0f8951928b9bc0a5e62b489566f72dc88d4a4e..915dde812d0aa54b2da7a1766c9b859bfae40723 100644
--- a/devel/electron11/files/patch-chrome_test_BUILD.gn
+++ b/devel/electron12/files/patch-chrome_test_BUILD.gn
@@ -1,6 +1,6 @@
---- chrome/test/BUILD.gn.orig	2021-01-07 00:36:26 UTC
+--- chrome/test/BUILD.gn.orig	2021-04-14 01:08:42 UTC
 +++ chrome/test/BUILD.gn
-@@ -6572,7 +6572,7 @@ test("chrome_app_unittests") {
+@@ -6915,7 +6915,7 @@ test("chrome_app_unittests") {
      "//components/safe_browsing:buildflags",
      "//pdf:pdf_ppapi",
    ]
diff --git a/devel/electron11/files/patch-chrome_test_base_in__process__browser__test.cc b/devel/electron12/files/patch-chrome_test_base_in__process__browser__test.cc
similarity index 81%
rename from devel/electron11/files/patch-chrome_test_base_in__process__browser__test.cc
rename to devel/electron12/files/patch-chrome_test_base_in__process__browser__test.cc
index 6c699bd90308fbbb334ad6f47447f0e077a5f9ed..9750a5bc3571585bfb12ae83ec94cdd5e4b5eb65 100644
--- a/devel/electron11/files/patch-chrome_test_base_in__process__browser__test.cc
+++ b/devel/electron12/files/patch-chrome_test_base_in__process__browser__test.cc
@@ -1,6 +1,6 @@
---- chrome/test/base/in_process_browser_test.cc.orig	2021-01-07 00:36:26 UTC
+--- chrome/test/base/in_process_browser_test.cc.orig	2021-04-14 01:08:42 UTC
 +++ chrome/test/base/in_process_browser_test.cc
-@@ -78,6 +78,10 @@
+@@ -80,6 +80,10 @@
  #include "chrome/test/base/scoped_bundle_swizzler_mac.h"
  #endif
  
@@ -11,7 +11,7 @@
  #if defined(OS_WIN)
  #include "base/win/scoped_com_initializer.h"
  #include "base/win/windows_version.h"
-@@ -288,7 +292,7 @@ void InProcessBrowserTest::SetUp() {
+@@ -305,7 +309,7 @@ void InProcessBrowserTest::SetUp() {
    // Cookies). Without this on Mac and Linux, many tests will hang waiting for a
    // user to approve KeyChain/kwallet access. On Windows this is not needed as
    // OS APIs never block.
@@ -20,7 +20,7 @@
    OSCryptMocker::SetUp();
  #endif
  
-@@ -348,7 +352,7 @@ void InProcessBrowserTest::TearDown() {
+@@ -368,7 +372,7 @@ void InProcessBrowserTest::TearDown() {
    com_initializer_.reset();
  #endif
    BrowserTestBase::TearDown();
diff --git a/devel/electron12/files/patch-chrome_test_base_interactive__ui__tests__main.cc b/devel/electron12/files/patch-chrome_test_base_interactive__ui__tests__main.cc
new file mode 100644
index 0000000000000000000000000000000000000000..8afdf7cc0f71d383b8f0e8615a54b976778f3887
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_test_base_interactive__ui__tests__main.cc
@@ -0,0 +1,20 @@
+--- chrome/test/base/interactive_ui_tests_main.cc.orig	2021-04-14 01:08:42 UTC
++++ chrome/test/base/interactive_ui_tests_main.cc
+@@ -17,7 +17,7 @@
+ #if defined(USE_AURA)
+ #include "ui/aura/test/ui_controls_factory_aura.h"
+ #include "ui/base/test/ui_controls_aura.h"
+-#if defined(USE_OZONE) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if defined(USE_OZONE) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
+ #include "ui/base/ui_base_features.h"
+ #include "ui/ozone/public/ozone_platform.h"
+ #include "ui/views/test/ui_controls_factory_desktop_aura_ozone.h"
+@@ -55,7 +55,7 @@ class InteractiveUITestSuite : public ChromeTestSuite 
+     com_initializer_.reset(new base::win::ScopedCOMInitializer());
+     ui_controls::InstallUIControlsAura(
+         aura::test::CreateUIControlsAura(nullptr));
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #if defined(USE_OZONE)
+     if (features::IsUsingOzonePlatform()) {
+       ui::OzonePlatform::InitParams params;
diff --git a/devel/electron12/files/patch-chrome_test_base_test__browser__window.h b/devel/electron12/files/patch-chrome_test_base_test__browser__window.h
new file mode 100644
index 0000000000000000000000000000000000000000..942efece6eca55ab6580d2674214b5dc9f70bd6d
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_test_base_test__browser__window.h
@@ -0,0 +1,11 @@
+--- chrome/test/base/test_browser_window.h.orig	2021-04-14 01:08:42 UTC
++++ chrome/test/base/test_browser_window.h
+@@ -176,7 +176,7 @@ class TestBrowserWindow : public BrowserWindow {
+       bool is_source_keyboard) override {}
+ 
+ #if defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_WIN) || \
+-    defined(OS_LINUX)
++    defined(OS_LINUX) || defined(OS_BSD)
+   void ShowHatsBubble(const std::string& site_id,
+                       base::OnceClosure success_callback,
+                       base::OnceClosure failure_callback) override {}
diff --git a/devel/electron11/files/patch-chrome_test_chromedriver_chrome__launcher.cc b/devel/electron12/files/patch-chrome_test_chromedriver_chrome__launcher.cc
similarity index 100%
rename from devel/electron11/files/patch-chrome_test_chromedriver_chrome__launcher.cc
rename to devel/electron12/files/patch-chrome_test_chromedriver_chrome__launcher.cc
diff --git a/devel/electron11/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc b/devel/electron12/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc
similarity index 100%
rename from devel/electron11/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc
rename to devel/electron12/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc
diff --git a/devel/electron11/files/patch-chrome_test_chromedriver_key__converter__unittest.cc b/devel/electron12/files/patch-chrome_test_chromedriver_key__converter__unittest.cc
similarity index 100%
rename from devel/electron11/files/patch-chrome_test_chromedriver_key__converter__unittest.cc
rename to devel/electron12/files/patch-chrome_test_chromedriver_key__converter__unittest.cc
diff --git a/devel/electron11/files/patch-chrome_test_chromedriver_server_chromedriver__server.cc b/devel/electron12/files/patch-chrome_test_chromedriver_server_chromedriver__server.cc
similarity index 87%
rename from devel/electron11/files/patch-chrome_test_chromedriver_server_chromedriver__server.cc
rename to devel/electron12/files/patch-chrome_test_chromedriver_server_chromedriver__server.cc
index 24a4b586303dd73cb0f5802e9c9808f48a949cfa..10172cb3205fe16ac33607abb53382509c74eef9 100644
--- a/devel/electron11/files/patch-chrome_test_chromedriver_server_chromedriver__server.cc
+++ b/devel/electron12/files/patch-chrome_test_chromedriver_server_chromedriver__server.cc
@@ -1,6 +1,6 @@
---- chrome/test/chromedriver/server/chromedriver_server.cc.orig	2021-01-07 00:36:26 UTC
+--- chrome/test/chromedriver/server/chromedriver_server.cc.orig	2021-04-14 01:08:42 UTC
 +++ chrome/test/chromedriver/server/chromedriver_server.cc
-@@ -283,7 +283,7 @@ int main(int argc, char *argv[]) {
+@@ -286,7 +286,7 @@ int main(int argc, char *argv[]) {
    base::AtExitManager at_exit;
    base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess();
  
diff --git a/devel/electron12/files/patch-chrome_utility_services.cc b/devel/electron12/files/patch-chrome_utility_services.cc
new file mode 100644
index 0000000000000000000000000000000000000000..bc950914193dcb9c825eb2001e37fcbeb052a3a0
--- /dev/null
+++ b/devel/electron12/files/patch-chrome_utility_services.cc
@@ -0,0 +1,29 @@
+--- chrome/utility/services.cc.orig	2021-04-14 01:08:44 UTC
++++ chrome/utility/services.cc
+@@ -76,7 +76,7 @@
+ #endif
+ 
+ #if BUILDFLAG(ENABLE_PRINTING)
+-#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD) || \
+     defined(OS_CHROMEOS)
+ #include "chrome/services/printing/print_backend_service_impl.h"
+ #include "chrome/services/printing/public/mojom/print_backend_service.mojom.h"
+@@ -227,7 +227,7 @@ auto RunPaintPreviewCompositor(
+ #endif  // BUILDFLAG(ENABLE_PAINT_PREVIEW)
+ 
+ #if BUILDFLAG(ENABLE_PRINTING)
+-#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD) || \
+     defined(OS_CHROMEOS)
+ auto RunPrintBackendService(
+     mojo::PendingReceiver<printing::mojom::PrintBackendService> receiver) {
+@@ -335,7 +335,7 @@ void RegisterMainThreadServices(mojo::ServiceFactory& 
+ #endif
+ 
+ #if BUILDFLAG(ENABLE_PRINTING)
+-#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD) || \
+     defined(OS_CHROMEOS)
+   services.Add(RunPrintBackendService);
+ #endif
diff --git a/devel/electron12/files/patch-chromecast_app_cast__main__delegate.cc b/devel/electron12/files/patch-chromecast_app_cast__main__delegate.cc
new file mode 100644
index 0000000000000000000000000000000000000000..e5f8c3b6de6fba872d5710079199388afa799903
--- /dev/null
+++ b/devel/electron12/files/patch-chromecast_app_cast__main__delegate.cc
@@ -0,0 +1,11 @@
+--- chromecast/app/cast_main_delegate.cc.orig	2021-04-14 01:08:44 UTC
++++ chromecast/app/cast_main_delegate.cc
+@@ -136,7 +136,7 @@ bool CastMainDelegate::BasicStartupComplete(int* exit_
+ 
+ void CastMainDelegate::PreSandboxStartup() {
+ #if defined(ARCH_CPU_ARM_FAMILY) && \
+-    (defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS))
++    (defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD))
+   // Create an instance of the CPU class to parse /proc/cpuinfo and cache the
+   // results. This data needs to be cached when file-reading is still allowed,
+   // since base::CPU expects to be callable later, when file-reading is no
diff --git a/devel/electron11/files/patch-chromecast_browser_cast__browser__main__parts.cc b/devel/electron12/files/patch-chromecast_browser_cast__browser__main__parts.cc
similarity index 83%
rename from devel/electron11/files/patch-chromecast_browser_cast__browser__main__parts.cc
rename to devel/electron12/files/patch-chromecast_browser_cast__browser__main__parts.cc
index 781d2770036b785700c79e2e9e30698bc31b7d5a..72d76f6a5158878adf768f20ff0dfe2b106bff4d 100644
--- a/devel/electron11/files/patch-chromecast_browser_cast__browser__main__parts.cc
+++ b/devel/electron12/files/patch-chromecast_browser_cast__browser__main__parts.cc
@@ -1,6 +1,6 @@
---- chromecast/browser/cast_browser_main_parts.cc.orig	2021-01-07 00:36:28 UTC
+--- chromecast/browser/cast_browser_main_parts.cc.orig	2021-04-14 01:08:44 UTC
 +++ chromecast/browser/cast_browser_main_parts.cc
-@@ -73,7 +73,7 @@
+@@ -75,7 +75,7 @@
  #include "ui/base/ui_base_switches.h"
  #include "ui/gl/gl_switches.h"
  
@@ -9,7 +9,7 @@
  #include <fontconfig/fontconfig.h>
  #include <signal.h>
  #include <sys/prctl.h>
-@@ -129,7 +129,7 @@
+@@ -131,7 +131,7 @@
  #include "extensions/browser/extension_prefs.h"  // nogncheck
  #endif
  
@@ -18,7 +18,7 @@
  #include "chromecast/browser/exo/wayland_server_controller.h"
  #endif
  
-@@ -271,7 +271,7 @@ class CastViewsDelegate : public views::ViewsDelegate 
+@@ -273,7 +273,7 @@ class CastViewsDelegate : public views::ViewsDelegate 
  
  #endif  // defined(USE_AURA)
  
@@ -27,7 +27,7 @@
  
  base::FilePath GetApplicationFontsDir() {
    std::unique_ptr<base::Environment> env(base::Environment::Create());
-@@ -287,7 +287,7 @@ base::FilePath GetApplicationFontsDir() {
+@@ -289,7 +289,7 @@ base::FilePath GetApplicationFontsDir() {
    }
  }
  
@@ -36,7 +36,7 @@
  
  }  // namespace
  
-@@ -316,7 +316,7 @@ const DefaultCommandLineSwitch kDefaultSwitches[] = {
+@@ -318,7 +318,7 @@ const DefaultCommandLineSwitch kDefaultSwitches[] = {
      {cc::switches::kDisableThreadedAnimation, ""},
  #endif  // defined(OS_ANDROID)
  #endif  // BUILDFLAG(IS_CAST_AUDIO_ONLY)
@@ -45,7 +45,7 @@
  #if defined(ARCH_CPU_X86_FAMILY)
      // This is needed for now to enable the x11 Ozone platform to work with
      // current Linux/NVidia OpenGL drivers.
-@@ -326,7 +326,7 @@ const DefaultCommandLineSwitch kDefaultSwitches[] = {
+@@ -328,7 +328,7 @@ const DefaultCommandLineSwitch kDefaultSwitches[] = {
      {switches::kEnableHardwareOverlays, "cast"},
  #endif
  #endif
@@ -54,7 +54,7 @@
      // It's better to start GPU process on demand. For example, for TV platforms
      // cast starts in background and can't render until TV switches to cast
      // input.
-@@ -476,7 +476,7 @@ void CastBrowserMainParts::ToolkitInitialized() {
+@@ -482,7 +482,7 @@ void CastBrowserMainParts::ToolkitInitialized() {
      views_delegate_ = std::make_unique<CastViewsDelegate>();
  #endif  // defined(USE_AURA)
  
@@ -63,7 +63,7 @@
    base::FilePath dir_font = GetApplicationFontsDir();
    const FcChar8 *dir_font_char8 = reinterpret_cast<const FcChar8*>(dir_font.value().data());
    if (!FcConfigAppFontAddDir(gfx::GetGlobalFontConfig(), dir_font_char8)) {
-@@ -657,7 +657,7 @@ void CastBrowserMainParts::PreMainMessageLoopRun() {
+@@ -666,7 +666,7 @@ void CastBrowserMainParts::PreMainMessageLoopRun() {
        cast_browser_process_->browser_context());
  #endif
  
@@ -72,7 +72,7 @@
    wayland_server_controller_ =
        std::make_unique<WaylandServerController>(window_manager_.get());
  #endif
-@@ -739,7 +739,7 @@ bool CastBrowserMainParts::MainMessageLoopRun(int* res
+@@ -748,7 +748,7 @@ bool CastBrowserMainParts::MainMessageLoopRun(int* res
  }
  
  void CastBrowserMainParts::PostMainMessageLoopRun() {
diff --git a/devel/electron12/files/patch-chromecast_browser_cast__browser__main__parts.h b/devel/electron12/files/patch-chromecast_browser_cast__browser__main__parts.h
new file mode 100644
index 0000000000000000000000000000000000000000..a88bcb7e4145cdc88f0e2ce19caaf2f9e05a515b
--- /dev/null
+++ b/devel/electron12/files/patch-chromecast_browser_cast__browser__main__parts.h
@@ -0,0 +1,11 @@
+--- chromecast/browser/cast_browser_main_parts.h.orig	2021-04-14 01:08:44 UTC
++++ chromecast/browser/cast_browser_main_parts.h
+@@ -133,7 +133,7 @@ class CastBrowserMainParts : public content::BrowserMa
+   std::unique_ptr<PrefService> user_pref_service_;
+ #endif
+ 
+-#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(USE_OZONE)
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && defined(USE_OZONE)
+   std::unique_ptr<WaylandServerController> wayland_server_controller_;
+ #endif
+ 
diff --git a/devel/electron11/files/patch-chromecast_browser_cast__content__browser__client.cc b/devel/electron12/files/patch-chromecast_browser_cast__content__browser__client.cc
similarity index 91%
rename from devel/electron11/files/patch-chromecast_browser_cast__content__browser__client.cc
rename to devel/electron12/files/patch-chromecast_browser_cast__content__browser__client.cc
index 0b0cd752fa3a1c98baf5abe326c0cccbcef8a621..591363f602de2441bf9ae01acb419fad1994f41d 100644
--- a/devel/electron11/files/patch-chromecast_browser_cast__content__browser__client.cc
+++ b/devel/electron12/files/patch-chromecast_browser_cast__content__browser__client.cc
@@ -1,7 +1,7 @@
---- chromecast/browser/cast_content_browser_client.cc.orig	2021-01-07 00:36:28 UTC
+--- chromecast/browser/cast_content_browser_client.cc.orig	2021-04-14 01:08:44 UTC
 +++ chromecast/browser/cast_content_browser_client.cc
 @@ -130,9 +130,9 @@
- #include "chromecast/external_mojo/broker_service/broker_service.h"
+ #include "chromecast/external_mojo/broker_service/broker_service.h"  // nogncheck
  #endif
  
 -#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(USE_OZONE)
@@ -12,7 +12,7 @@
  
  #if BUILDFLAG(ENABLE_CAST_RENDERER)
  #include "base/sequenced_task_runner.h"
-@@ -472,7 +472,7 @@ void CastContentBrowserClient::AppendExtraCommandLineS
+@@ -475,7 +475,7 @@ void CastContentBrowserClient::AppendExtraCommandLineS
                                            switches::kAudioOutputChannels));
      }
    } else if (process_type == switches::kGpuProcess) {
@@ -21,7 +21,7 @@
      // Necessary for accelerated 2d canvas.  By default on Linux, Chromium
      // assumes GLES2 contexts can be lost to a power-save mode, which breaks GPU
      // canvas apps.
-@@ -854,12 +854,12 @@ CastContentBrowserClient::CreateThrottlesForNavigation
+@@ -874,12 +874,12 @@ CastContentBrowserClient::CreateThrottlesForNavigation
              handle, general_audience_browsing_service_.get()));
    }
  
diff --git a/devel/electron12/files/patch-chromecast_browser_cast__content__browser__client__receiver__bindings.cc b/devel/electron12/files/patch-chromecast_browser_cast__content__browser__client__receiver__bindings.cc
new file mode 100644
index 0000000000000000000000000000000000000000..cee509cf8f9de0a76a8e1fbaa676f10ecb593285
--- /dev/null
+++ b/devel/electron12/files/patch-chromecast_browser_cast__content__browser__client__receiver__bindings.cc
@@ -0,0 +1,20 @@
+--- chromecast/browser/cast_content_browser_client_receiver_bindings.cc.orig	2021-04-14 01:08:44 UTC
++++ chromecast/browser/cast_content_browser_client_receiver_bindings.cc
+@@ -39,7 +39,7 @@
+ #include "chromecast/external_mojo/broker_service/broker_service.h"  // nogncheck
+ #endif
+ 
+-#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(USE_OZONE)
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && defined(USE_OZONE)
+ #include "chromecast/browser/webview/js_channel_service.h"
+ #include "chromecast/common/mojom/js_channel.mojom.h"
+ #endif
+@@ -224,7 +224,7 @@ void CastContentBrowserClient::RunServiceInstance(
+ void CastContentBrowserClient::BindHostReceiverForRenderer(
+     content::RenderProcessHost* render_process_host,
+     mojo::GenericPendingReceiver receiver) {
+-#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(USE_OZONE)
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && defined(USE_OZONE)
+   if (auto r = receiver.As<::chromecast::mojom::JsChannelBindingProvider>()) {
+     JsChannelService::Create(render_process_host, std::move(r),
+                              base::ThreadTaskRunnerHandle::Get());
diff --git a/devel/electron12/files/patch-chromecast_browser_metrics_cast__browser__metrics.cc b/devel/electron12/files/patch-chromecast_browser_metrics_cast__browser__metrics.cc
new file mode 100644
index 0000000000000000000000000000000000000000..bf55e01d01c90affb72ec18f08d1899dee1e4af1
--- /dev/null
+++ b/devel/electron12/files/patch-chromecast_browser_metrics_cast__browser__metrics.cc
@@ -0,0 +1,87 @@
+--- chromecast/browser/metrics/cast_browser_metrics.cc.orig	2021-04-14 01:08:44 UTC
++++ chromecast/browser/metrics/cast_browser_metrics.cc
+@@ -19,9 +19,9 @@
+ #include "content/public/browser/network_service_instance.h"
+ #include "content/public/common/content_switches.h"
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "chromecast/browser/metrics/external_metrics.h"
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ 
+ #if defined(OS_ANDROID)
+ #include "chromecast/base/android/dumpstate_writer.h"
+@@ -32,10 +32,10 @@ namespace metrics {
+ 
+ const int kMetricsFetchTimeoutSeconds = 60;
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ const char kExternalUmaEventsRelativePath[] = "metrics/uma-events";
+ const char kPlatformUmaEventsPath[] = "/data/share/chrome/metrics/uma-events";
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ 
+ CastBrowserMetrics::CastBrowserMetrics(
+     std::unique_ptr<CastMetricsServiceClient> metrics_service_client) {
+@@ -48,10 +48,10 @@ CastBrowserMetrics::CastBrowserMetrics(
+ }
+ 
+ CastBrowserMetrics::~CastBrowserMetrics() {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   DCHECK(!external_metrics_);
+   DCHECK(!platform_metrics_);
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ }
+ 
+ void CastBrowserMetrics::Initialize() {
+@@ -61,9 +61,9 @@ void CastBrowserMetrics::Initialize() {
+   auto stability_provider_unique_ptr =
+       std::make_unique<CastStabilityMetricsProvider>(
+           metrics_service, metrics_service_client_->pref_service());
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   auto* stability_provider = stability_provider_unique_ptr.get();
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   metrics_service->RegisterMetricsProvider(
+       std::move(stability_provider_unique_ptr));
+ 
+@@ -84,7 +84,7 @@ void CastBrowserMetrics::Initialize() {
+ 
+   metrics_service_client_->StartMetricsService();
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS)A || defined(OS_BSD)
+   // Start external metrics collection, which feeds data from external
+   // processes into the main external metrics.
+   external_metrics_ = new ExternalMetrics(
+@@ -94,7 +94,7 @@ void CastBrowserMetrics::Initialize() {
+   platform_metrics_ =
+       new ExternalMetrics(stability_provider, kPlatformUmaEventsPath);
+   platform_metrics_->Start();
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ }
+ 
+ void CastBrowserMetrics::Finalize() {
+@@ -103,14 +103,14 @@ void CastBrowserMetrics::Finalize() {
+   metrics_service_client_->GetMetricsService()->RecordCompletedSessionEnd();
+ #endif  // !defined(OS_ANDROID)
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   // Stop metrics service cleanly before destructing CastMetricsServiceClient.
+   // The pointer will be deleted in StopAndDestroy().
+   external_metrics_->StopAndDestroy();
+   external_metrics_ = nullptr;
+   platform_metrics_->StopAndDestroy();
+   platform_metrics_ = nullptr;
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ 
+   metrics_service_client_->Finalize();
+ }
diff --git a/devel/electron12/files/patch-chromecast_browser_metrics_cast__browser__metrics.h b/devel/electron12/files/patch-chromecast_browser_metrics_cast__browser__metrics.h
new file mode 100644
index 0000000000000000000000000000000000000000..d2ebe9050ef780700dc986e2fe3bce0cf77cfa75
--- /dev/null
+++ b/devel/electron12/files/patch-chromecast_browser_metrics_cast__browser__metrics.h
@@ -0,0 +1,15 @@
+--- chromecast/browser/metrics/cast_browser_metrics.h.orig	2021-04-14 01:08:44 UTC
++++ chromecast/browser/metrics/cast_browser_metrics.h
+@@ -38,10 +38,10 @@ class CastBrowserMetrics {
+  private:
+   std::unique_ptr<CastMetricsServiceClient> metrics_service_client_;
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   ExternalMetrics* external_metrics_ = nullptr;
+   ExternalMetrics* platform_metrics_ = nullptr;
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ 
+   DISALLOW_COPY_AND_ASSIGN(CastBrowserMetrics);
+ };
diff --git a/devel/electron11/files/patch-chromecast_external__mojo_public_cpp_external__mojo__broker.cc b/devel/electron12/files/patch-chromecast_external__mojo_public_cpp_external__mojo__broker.cc
similarity index 81%
rename from devel/electron11/files/patch-chromecast_external__mojo_public_cpp_external__mojo__broker.cc
rename to devel/electron12/files/patch-chromecast_external__mojo_public_cpp_external__mojo__broker.cc
index ca519f5fd55f08301328acdf1e6c31e7edf60a5c..835926b905f2b8ca1dc17529ea3b970b36b3008d 100644
--- a/devel/electron11/files/patch-chromecast_external__mojo_public_cpp_external__mojo__broker.cc
+++ b/devel/electron12/files/patch-chromecast_external__mojo_public_cpp_external__mojo__broker.cc
@@ -1,7 +1,7 @@
---- chromecast/external_mojo/public/cpp/external_mojo_broker.cc.orig	2021-01-07 00:36:28 UTC
+--- chromecast/external_mojo/public/cpp/external_mojo_broker.cc.orig	2021-04-14 01:08:44 UTC
 +++ chromecast/external_mojo/public/cpp/external_mojo_broker.cc
-@@ -7,7 +7,7 @@
- #include <map>
+@@ -8,7 +8,7 @@
+ #include <set>
  #include <utility>
  
 -#if defined(OS_LINUX) || defined(OS_CHROMEOS)
@@ -9,7 +9,7 @@
  #include <sys/stat.h>
  #endif
  
-@@ -412,7 +412,7 @@ ExternalMojoBroker::ExternalMojoBroker(const std::stri
+@@ -419,7 +419,7 @@ ExternalMojoBroker::ExternalMojoBroker(const std::stri
        named_channel.TakeServerEndpoint();
    DCHECK(server_endpoint.is_valid());
  
diff --git a/devel/electron11/files/patch-chromecast_media_base_default__monotonic__clock.cc b/devel/electron12/files/patch-chromecast_media_base_default__monotonic__clock.cc
similarity index 100%
rename from devel/electron11/files/patch-chromecast_media_base_default__monotonic__clock.cc
rename to devel/electron12/files/patch-chromecast_media_base_default__monotonic__clock.cc
diff --git a/devel/electron11/files/patch-chromecast_renderer_cast__content__renderer__client.cc b/devel/electron12/files/patch-chromecast_renderer_cast__content__renderer__client.cc
similarity index 100%
rename from devel/electron11/files/patch-chromecast_renderer_cast__content__renderer__client.cc
rename to devel/electron12/files/patch-chromecast_renderer_cast__content__renderer__client.cc
diff --git a/devel/electron11/files/patch-components_BUILD.gn b/devel/electron12/files/patch-components_BUILD.gn
similarity index 66%
rename from devel/electron11/files/patch-components_BUILD.gn
rename to devel/electron12/files/patch-components_BUILD.gn
index 8d2a1c6e747e5c9b6dc71d7c7dc009a22d4f0973..a5754c7b2c9745e8b90e0911d6aad517a5423930 100644
--- a/devel/electron11/files/patch-components_BUILD.gn
+++ b/devel/electron12/files/patch-components_BUILD.gn
@@ -1,20 +1,17 @@
---- components/BUILD.gn.orig	2021-01-07 00:36:29 UTC
+--- components/BUILD.gn.orig	2021-04-14 01:08:44 UTC
 +++ components/BUILD.gn
-@@ -308,10 +308,15 @@ test("components_unittests") {
-     ]
+@@ -324,9 +324,13 @@ test("components_unittests") {
+     }
  
      if (!is_fuchsia) {  # !iOS and !Fuchsia
 +      if (!is_bsd) {
 +        deps += [
 +          "//components/crash/content/browser:unit_tests",
-+          "//components/crash/content/browser/error_reporting:unit_tests",
 +          "//components/crash/core/app:unit_tests",
 +        ]
 +      }
-+
        deps += [
 -        "//components/crash/content/browser:unit_tests",
--        "//components/crash/content/browser/error_reporting:unit_tests",
 -        "//components/crash/core/app:unit_tests",
          "//components/data_reduction_proxy/core/browser:unit_tests",
          "//components/data_reduction_proxy/core/common:unit_tests",
diff --git a/devel/electron11/files/patch-components_autofill_content_renderer_password__form__conversion__utils.cc b/devel/electron12/files/patch-components_autofill_content_renderer_password__form__conversion__utils.cc
similarity index 89%
rename from devel/electron11/files/patch-components_autofill_content_renderer_password__form__conversion__utils.cc
rename to devel/electron12/files/patch-components_autofill_content_renderer_password__form__conversion__utils.cc
index 6227165854a4ee6b1e14d65e3a1f359e681ed4d7..f2d47ff42767ce4220a4bdecd522b58ce585785e 100644
--- a/devel/electron11/files/patch-components_autofill_content_renderer_password__form__conversion__utils.cc
+++ b/devel/electron12/files/patch-components_autofill_content_renderer_password__form__conversion__utils.cc
@@ -1,6 +1,6 @@
---- components/autofill/content/renderer/password_form_conversion_utils.cc.orig	2021-01-07 00:36:29 UTC
+--- components/autofill/content/renderer/password_form_conversion_utils.cc.orig	2021-04-14 01:08:44 UTC
 +++ components/autofill/content/renderer/password_form_conversion_utils.cc
-@@ -19,7 +19,11 @@
+@@ -18,7 +18,11 @@
  #include "third_party/blink/public/web/web_form_control_element.h"
  #include "third_party/blink/public/web/web_input_element.h"
  #include "third_party/blink/public/web/web_local_frame.h"
diff --git a/devel/electron11/files/patch-components_autofill_core_browser_autofill__external__delegate.cc b/devel/electron12/files/patch-components_autofill_core_browser_autofill__external__delegate.cc
similarity index 84%
rename from devel/electron11/files/patch-components_autofill_core_browser_autofill__external__delegate.cc
rename to devel/electron12/files/patch-components_autofill_core_browser_autofill__external__delegate.cc
index 711e8f38cc60820ff4af6790604f8db22a71a30c..05bede861352d63b6515d69103c9ee61558fb6ed 100644
--- a/devel/electron11/files/patch-components_autofill_core_browser_autofill__external__delegate.cc
+++ b/devel/electron12/files/patch-components_autofill_core_browser_autofill__external__delegate.cc
@@ -1,6 +1,6 @@
---- components/autofill/core/browser/autofill_external_delegate.cc.orig	2021-01-07 00:36:29 UTC
+--- components/autofill/core/browser/autofill_external_delegate.cc.orig	2021-04-14 01:08:44 UTC
 +++ components/autofill/core/browser/autofill_external_delegate.cc
-@@ -127,7 +127,7 @@ void AutofillExternalDelegate::OnSuggestionsReturned(
+@@ -128,7 +128,7 @@ void AutofillExternalDelegate::OnSuggestionsReturned(
  
      // Append the "Hide Suggestions" menu item for only Autofill Address and
      // Autocomplete popups.
diff --git a/devel/electron12/files/patch-components_autofill_core_browser_personal__data__manager.cc b/devel/electron12/files/patch-components_autofill_core_browser_personal__data__manager.cc
new file mode 100644
index 0000000000000000000000000000000000000000..e2ad2b20136f58ca2e91feba6c0177047294f143
--- /dev/null
+++ b/devel/electron12/files/patch-components_autofill_core_browser_personal__data__manager.cc
@@ -0,0 +1,20 @@
+--- components/autofill/core/browser/personal_data_manager.cc.orig	2021-04-14 01:08:44 UTC
++++ components/autofill/core/browser/personal_data_manager.cc
+@@ -1917,7 +1917,7 @@ bool PersonalDataManager::ShouldShowCardsFromAccountOp
+ // The feature is only for Linux, Windows and Mac.
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_WIN) || \
++#if (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_WIN) || defined(OS_BSD) || \
+     defined(OS_APPLE)
+   // This option should only be shown for users that have not enabled the Sync
+   // Feature and that have server credit cards available.
+@@ -1941,7 +1941,7 @@ bool PersonalDataManager::ShouldShowCardsFromAccountOp
+   return !is_opted_in;
+ #else
+   return false;
+-#endif  // #if (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) ||
++#endif  // #if (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD) ||
+         // defined(OS_WIN) || defined(OS_APPLE)
+ }
+ 
diff --git a/devel/electron12/files/patch-components_autofill_core_common_autofill__payments__features.cc b/devel/electron12/files/patch-components_autofill_core_common_autofill__payments__features.cc
new file mode 100644
index 0000000000000000000000000000000000000000..753c0cd2781807b1c463b8ad7ef9ff247ff476fa
--- /dev/null
+++ b/devel/electron12/files/patch-components_autofill_core_common_autofill__payments__features.cc
@@ -0,0 +1,11 @@
+--- components/autofill/core/common/autofill_payments_features.cc.orig	2021-04-14 01:08:44 UTC
++++ components/autofill/core/common/autofill_payments_features.cc
+@@ -138,7 +138,7 @@ bool ShouldShowImprovedUserConsentForCreditCardSave() 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+ #if defined(OS_WIN) || defined(OS_APPLE) || \
+-    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+   // The new user consent UI is fully launched on MacOS, Windows and Linux.
+   return true;
+ #else
diff --git a/devel/electron11/files/patch-components_autofill_core_common_autofill__util.cc b/devel/electron12/files/patch-components_autofill_core_common_autofill__util.cc
similarity index 100%
rename from devel/electron11/files/patch-components_autofill_core_common_autofill__util.cc
rename to devel/electron12/files/patch-components_autofill_core_common_autofill__util.cc
diff --git a/devel/electron12/files/patch-components_content__settings_core_browser_website__settings__registry.cc b/devel/electron12/files/patch-components_content__settings_core_browser_website__settings__registry.cc
new file mode 100644
index 0000000000000000000000000000000000000000..a112e5fe5c8bad6bd9b873eab470054d185c3163
--- /dev/null
+++ b/devel/electron12/files/patch-components_content__settings_core_browser_website__settings__registry.cc
@@ -0,0 +1,11 @@
+--- components/content_settings/core/browser/website_settings_registry.cc.orig	2021-04-14 01:08:45 UTC
++++ components/content_settings/core/browser/website_settings_registry.cc
+@@ -69,7 +69,7 @@ const WebsiteSettingsInfo* WebsiteSettingsRegistry::Re
+     return nullptr;
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   if (!(platform & PLATFORM_LINUX))
+     return nullptr;
+ #elif defined(OS_MAC)
diff --git a/devel/electron11/files/patch-components_cookie__config_cookie__store__util.cc b/devel/electron12/files/patch-components_cookie__config_cookie__store__util.cc
similarity index 100%
rename from devel/electron11/files/patch-components_cookie__config_cookie__store__util.cc
rename to devel/electron12/files/patch-components_cookie__config_cookie__store__util.cc
diff --git a/devel/electron12/files/patch-components_crash_content_browser_BUILD.gn b/devel/electron12/files/patch-components_crash_content_browser_BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..6b1ef8ea316777ded9851f771c599fc4327f23bd
--- /dev/null
+++ b/devel/electron12/files/patch-components_crash_content_browser_BUILD.gn
@@ -0,0 +1,20 @@
+--- components/crash/content/browser/BUILD.gn.orig	2021-04-14 01:08:45 UTC
++++ components/crash/content/browser/BUILD.gn
+@@ -37,7 +37,7 @@ source_set("browser") {
+ 
+   # This is not in the GYP build but this target includes breakpad client
+   # headers, so add the dependency here.
+-  if ((is_posix && !is_ios) || is_fuchsia) {
++  if ((is_posix && !is_ios && !is_bsd) || is_fuchsia) {
+     configs += [ "//third_party/breakpad:client_config" ]
+     public_configs = [ "//third_party/breakpad:client_config" ]
+   }
+@@ -57,7 +57,7 @@ source_set("browser") {
+       "//components/crash/android:jni_headers",
+       "//mojo/public/cpp/bindings",
+     ]
+-  } else {
++  } else if (!is_bsd) {
+     deps += [ "//third_party/breakpad:client" ]
+   }
+ }
diff --git a/devel/electron12/files/patch-components_crash_content_browser_error__reporting_BUILD.gn b/devel/electron12/files/patch-components_crash_content_browser_error__reporting_BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..d972f02084d9bda46b9b62d067d04e31aac972b3
--- /dev/null
+++ b/devel/electron12/files/patch-components_crash_content_browser_error__reporting_BUILD.gn
@@ -0,0 +1,13 @@
+--- components/crash/content/browser/error_reporting/BUILD.gn.orig	2021-04-14 01:08:45 UTC
++++ components/crash/content/browser/error_reporting/BUILD.gn
+@@ -30,4 +30,10 @@ source_set("mock_crash_endpoint") {
+     "//testing/gtest",
+     "//url",
+   ]
++
++  if (is_bsd) {
++    deps -= [
++      "//components/crash/core/app",
++    ]
++  }
+ }
diff --git a/devel/electron11/files/patch-components_crash_core_app_BUILD.gn b/devel/electron12/files/patch-components_crash_core_app_BUILD.gn
similarity index 100%
rename from devel/electron11/files/patch-components_crash_core_app_BUILD.gn
rename to devel/electron12/files/patch-components_crash_core_app_BUILD.gn
diff --git a/devel/electron11/files/patch-components_crash_core_common_BUILD.gn b/devel/electron12/files/patch-components_crash_core_common_BUILD.gn
similarity index 93%
rename from devel/electron11/files/patch-components_crash_core_common_BUILD.gn
rename to devel/electron12/files/patch-components_crash_core_common_BUILD.gn
index b1ac79a33faa0e55c6624184f01709e167e0f3c0..293a05e441a3d5a05d200160e00e45b3d3e56d09 100644
--- a/devel/electron11/files/patch-components_crash_core_common_BUILD.gn
+++ b/devel/electron12/files/patch-components_crash_core_common_BUILD.gn
@@ -1,4 +1,4 @@
---- components/crash/core/common/BUILD.gn.orig	2021-01-07 00:36:29 UTC
+--- components/crash/core/common/BUILD.gn.orig	2021-04-14 01:08:45 UTC
 +++ components/crash/core/common/BUILD.gn
 @@ -7,7 +7,7 @@ import("//components/gwp_asan/buildflags/buildflags.gn
  
@@ -29,7 +29,7 @@
    } else {
      include_dirs = [ "//third_party/breakpad/breakpad/src" ]
  
-@@ -184,7 +186,7 @@ source_set("unit_tests") {
+@@ -185,7 +187,7 @@ source_set("unit_tests") {
      sources += [ "crash_key_breakpad_ios_unittest.cc" ]
      deps += [ "//third_party/breakpad:client" ]
      include_dirs = [ "//third_party/breakpad/breakpad/src/" ]
diff --git a/devel/electron11/files/patch-components_discardable__memory_service_discardable__shared__memory__manager.cc b/devel/electron12/files/patch-components_discardable__memory_service_discardable__shared__memory__manager.cc
similarity index 58%
rename from devel/electron11/files/patch-components_discardable__memory_service_discardable__shared__memory__manager.cc
rename to devel/electron12/files/patch-components_discardable__memory_service_discardable__shared__memory__manager.cc
index c66a72f32eb809f34953d087b6d1efd8c1fcbd3a..693fe27a16e0ed76b8c5ccd13953e71cf46c64dd 100644
--- a/devel/electron11/files/patch-components_discardable__memory_service_discardable__shared__memory__manager.cc
+++ b/devel/electron12/files/patch-components_discardable__memory_service_discardable__shared__memory__manager.cc
@@ -1,4 +1,4 @@
---- components/discardable_memory/service/discardable_shared_memory_manager.cc.orig	2021-01-07 00:36:29 UTC
+--- components/discardable_memory/service/discardable_shared_memory_manager.cc.orig	2021-04-14 01:08:45 UTC
 +++ components/discardable_memory/service/discardable_shared_memory_manager.cc
 @@ -33,7 +33,7 @@
  #include "components/discardable_memory/common/discardable_shared_memory_heap.h"
@@ -9,12 +9,3 @@
  #include "base/files/file_path.h"
  #include "base/files/file_util.h"
  #include "base/metrics/histogram_macros.h"
-@@ -176,7 +176,7 @@ int64_t GetDefaultMemoryLimit() {
-     max_default_memory_limit /= 8;
- #endif
- 
--#if defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
-   base::FilePath shmem_dir;
-   if (base::GetShmemTempDir(false, &shmem_dir)) {
-     int64_t shmem_dir_amount_of_free_space =
diff --git a/devel/electron11/files/patch-components_download_internal_common_base__file.cc b/devel/electron12/files/patch-components_download_internal_common_base__file.cc
similarity index 100%
rename from devel/electron11/files/patch-components_download_internal_common_base__file.cc
rename to devel/electron12/files/patch-components_download_internal_common_base__file.cc
diff --git a/devel/electron11/files/patch-components_feature__engagement_public_event__constants.cc b/devel/electron12/files/patch-components_feature__engagement_public_event__constants.cc
similarity index 73%
rename from devel/electron11/files/patch-components_feature__engagement_public_event__constants.cc
rename to devel/electron12/files/patch-components_feature__engagement_public_event__constants.cc
index 1626234a17e75bf621db77f5a96b442a6dd2db29..f45ad708df481ce11dd7439e0e6e9ac65f1df1e5 100644
--- a/devel/electron11/files/patch-components_feature__engagement_public_event__constants.cc
+++ b/devel/electron12/files/patch-components_feature__engagement_public_event__constants.cc
@@ -1,4 +1,4 @@
---- components/feature_engagement/public/event_constants.cc.orig	2021-01-07 00:36:29 UTC
+--- components/feature_engagement/public/event_constants.cc.orig	2021-04-14 01:08:45 UTC
 +++ components/feature_engagement/public/event_constants.cc
 @@ -10,13 +10,13 @@ namespace feature_engagement {
  
@@ -8,19 +8,19 @@
 +#if defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) || defined(OS_BSD) || \
      defined(OS_CHROMEOS)
  const char kNewTabOpened[] = "new_tab_opened";
- #endif  // defined(OS_WIN) || defined(OS_APPLE) ||
--        // defined(OS_LINUX) || defined(OS_CHROMEOS)
-+        // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+-#endif  // defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) ||
++#endif  // defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) || defined(OS_BSD) ||
+         // defined(OS_CHROMEOS)
  
 -#if defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) || \
 +#if defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) || defined(OS_BSD) || \
      defined(OS_CHROMEOS)
  const char kSixthTabOpened[] = "sixth_tab_opened";
  const char kTabGroupCreated[] = "tab_group_created";
-@@ -32,7 +32,7 @@ const char kFocusModeConditionsMet[] = "focus_mode_con
- 
- const char kWebUITabStripClosed[] = "webui_tab_strip_closed";
+@@ -34,7 +34,7 @@ const char kWebUITabStripClosed[] = "webui_tab_strip_c
  const char kWebUITabStripOpened[] = "webui_tab_strip_opened";
+ 
+ const char kDesktopPwaInstalled[] = "desktop_pwa_installed";
 -#endif  // defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) ||
 +#endif  // defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) || defined(OS_BSD) ||
          // defined(OS_CHROMEOS)
diff --git a/devel/electron11/files/patch-components_feature__engagement_public_event__constants.h b/devel/electron12/files/patch-components_feature__engagement_public_event__constants.h
similarity index 74%
rename from devel/electron11/files/patch-components_feature__engagement_public_event__constants.h
rename to devel/electron12/files/patch-components_feature__engagement_public_event__constants.h
index 9175babeb93d11966feb0653278de450d653f3dd..eb41c3874a59d0f4de03d4dad63ca50f0dd5b705 100644
--- a/devel/electron11/files/patch-components_feature__engagement_public_event__constants.h
+++ b/devel/electron12/files/patch-components_feature__engagement_public_event__constants.h
@@ -1,4 +1,4 @@
---- components/feature_engagement/public/event_constants.h.orig	2021-01-07 00:36:29 UTC
+--- components/feature_engagement/public/event_constants.h.orig	2021-04-14 01:08:45 UTC
 +++ components/feature_engagement/public/event_constants.h
 @@ -12,16 +12,16 @@ namespace feature_engagement {
  namespace events {
@@ -10,9 +10,9 @@
  // The user has explicitly opened a new tab via an entry point from inside of
  // Chrome.
  extern const char kNewTabOpened[];
- #endif  // defined(OS_WIN) || defined(OS_APPLE) ||
--        // defined(OS_LINUX) || defined(OS_CHROMEOS)
-+        // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+-#endif  // defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) ||
++#endif  // defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) || defined(OS_BSD) ||
+         // defined(OS_CHROMEOS)
  
  // Desktop
 -#if defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) || \
@@ -20,9 +20,9 @@
      defined(OS_CHROMEOS)
  // A new tab was opened when 5 (or more) tabs were already open.
  extern const char kSixthTabOpened[];
-@@ -54,7 +54,7 @@ extern const char kWebUITabStripClosed[];
- // The WebUI tab strip was opened by the user.
- extern const char kWebUITabStripOpened[];
+@@ -57,7 +57,7 @@ extern const char kWebUITabStripOpened[];
+ // The PWA was installed by the user.
+ extern const char kDesktopPwaInstalled[];
  
 -#endif  // defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) ||
 +#endif  // defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) || defined(OS_BSD) ||
diff --git a/devel/electron11/files/patch-components_feature__engagement_public_feature__configurations.cc b/devel/electron12/files/patch-components_feature__engagement_public_feature__configurations.cc
similarity index 100%
rename from devel/electron11/files/patch-components_feature__engagement_public_feature__configurations.cc
rename to devel/electron12/files/patch-components_feature__engagement_public_feature__configurations.cc
diff --git a/devel/electron11/files/patch-components_feature__engagement_public_feature__constants.cc b/devel/electron12/files/patch-components_feature__engagement_public_feature__constants.cc
similarity index 78%
rename from devel/electron11/files/patch-components_feature__engagement_public_feature__constants.cc
rename to devel/electron12/files/patch-components_feature__engagement_public_feature__constants.cc
index d154a506aa713dc51a5189da705331798a6cb273..e0fa259983fa585690f898411ac283a96eadf541 100644
--- a/devel/electron11/files/patch-components_feature__engagement_public_feature__constants.cc
+++ b/devel/electron12/files/patch-components_feature__engagement_public_feature__constants.cc
@@ -1,4 +1,4 @@
---- components/feature_engagement/public/feature_constants.cc.orig	2021-01-07 00:36:29 UTC
+--- components/feature_engagement/public/feature_constants.cc.orig	2021-04-14 01:08:45 UTC
 +++ components/feature_engagement/public/feature_constants.cc
 @@ -12,7 +12,7 @@ const base::Feature kIPHDemoMode{"IPH_DemoMode",
  const base::Feature kIPHDummyFeature{"IPH_Dummy",
@@ -9,10 +9,10 @@
      defined(OS_CHROMEOS)
  const base::Feature kIPHDesktopTabGroupsNewGroupFeature{
      "IPH_DesktopTabGroupsNewGroup", base::FEATURE_DISABLED_BY_DEFAULT};
-@@ -30,7 +30,7 @@ const base::Feature kIPHWebUITabStripFeature{"IPH_WebU
-                                              base::FEATURE_DISABLED_BY_DEFAULT};
- const base::Feature kIPHDesktopSnoozeFeature{"IPH_DesktopSnoozeFeature",
+@@ -32,7 +32,7 @@ const base::Feature kIPHDesktopSnoozeFeature{"IPH_Desk
                                               base::FEATURE_DISABLED_BY_DEFAULT};
+ const base::Feature kIPHDesktopPwaInstallFeature{
+     "IPH_DesktopPwaInstall", base::FEATURE_DISABLED_BY_DEFAULT};
 -#endif  // defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) ||
 +#endif  // defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) || defined(OS_BSD) ||
          // defined(OS_CHROMEOS)
diff --git a/devel/electron11/files/patch-components_feature__engagement_public_feature__constants.h b/devel/electron12/files/patch-components_feature__engagement_public_feature__constants.h
similarity index 86%
rename from devel/electron11/files/patch-components_feature__engagement_public_feature__constants.h
rename to devel/electron12/files/patch-components_feature__engagement_public_feature__constants.h
index 40d19f7331d7972f77a21b59abafc0a786a6e26d..c835e43a2b8e2b1b537b0560f5ec4d8640130a72 100644
--- a/devel/electron11/files/patch-components_feature__engagement_public_feature__constants.h
+++ b/devel/electron12/files/patch-components_feature__engagement_public_feature__constants.h
@@ -1,4 +1,4 @@
---- components/feature_engagement/public/feature_constants.h.orig	2021-01-07 00:36:29 UTC
+--- components/feature_engagement/public/feature_constants.h.orig	2021-04-14 01:08:45 UTC
 +++ components/feature_engagement/public/feature_constants.h
 @@ -16,7 +16,7 @@ extern const base::Feature kIPHDemoMode;
  // A feature to ensure all arrays can contain at least one feature.
@@ -9,10 +9,10 @@
      defined(OS_CHROMEOS)
  extern const base::Feature kIPHDesktopTabGroupsNewGroupFeature;
  extern const base::Feature kIPHFocusModeFeature;
-@@ -26,7 +26,7 @@ extern const base::Feature kIPHPasswordsAccountStorage
- extern const base::Feature kIPHReopenTabFeature;
+@@ -27,7 +27,7 @@ extern const base::Feature kIPHReopenTabFeature;
  extern const base::Feature kIPHWebUITabStripFeature;
  extern const base::Feature kIPHDesktopSnoozeFeature;
+ extern const base::Feature kIPHDesktopPwaInstallFeature;
 -#endif  // defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) ||
 +#endif  // defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) || defined(OS_BSD) ||
          // defined(OS_CHROMEOS)
diff --git a/devel/electron11/files/patch-components_feature__engagement_public_feature__list.cc b/devel/electron12/files/patch-components_feature__engagement_public_feature__list.cc
similarity index 79%
rename from devel/electron11/files/patch-components_feature__engagement_public_feature__list.cc
rename to devel/electron12/files/patch-components_feature__engagement_public_feature__list.cc
index 1c13a8ad5da8af7a4dfc31e2dea59169172388b9..2a922cb39add16b84a9806f726a32c0eb5580d9e 100644
--- a/devel/electron11/files/patch-components_feature__engagement_public_feature__list.cc
+++ b/devel/electron12/files/patch-components_feature__engagement_public_feature__list.cc
@@ -1,6 +1,6 @@
---- components/feature_engagement/public/feature_list.cc.orig	2021-01-07 00:36:29 UTC
+--- components/feature_engagement/public/feature_list.cc.orig	2021-04-14 01:08:45 UTC
 +++ components/feature_engagement/public/feature_list.cc
-@@ -66,7 +66,7 @@ const base::Feature* const kAllFeatures[] = {
+@@ -78,7 +78,7 @@ const base::Feature* const kAllFeatures[] = {
      &kIPHBadgedTranslateManualTriggerFeature,
      &kIPHDiscoverFeedHeaderFeature,
  #endif  // defined(OS_IOS)
@@ -9,10 +9,10 @@
      defined(OS_CHROMEOS)
      &kIPHDesktopTabGroupsNewGroupFeature,
      &kIPHFocusModeFeature,
-@@ -75,7 +75,7 @@ const base::Feature* const kAllFeatures[] = {
-     &kIPHPasswordsAccountStorageFeature,
+@@ -88,7 +88,7 @@ const base::Feature* const kAllFeatures[] = {
      &kIPHReopenTabFeature,
      &kIPHWebUITabStripFeature,
+     &kIPHDesktopPwaInstallFeature,
 -#endif  // defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) ||
 +#endif  // defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) || defined(OS_BSD) ||
          // defined(OS_CHROMEOS)
diff --git a/devel/electron11/files/patch-components_feature__engagement_public_feature__list.h b/devel/electron12/files/patch-components_feature__engagement_public_feature__list.h
similarity index 80%
rename from devel/electron11/files/patch-components_feature__engagement_public_feature__list.h
rename to devel/electron12/files/patch-components_feature__engagement_public_feature__list.h
index e32d1c136314b7fe1966f214b6e912026bda86c0..ca2486ad47bc7f91f8bdaeb295311e410a8ec4a1 100644
--- a/devel/electron11/files/patch-components_feature__engagement_public_feature__list.h
+++ b/devel/electron12/files/patch-components_feature__engagement_public_feature__list.h
@@ -1,6 +1,6 @@
---- components/feature_engagement/public/feature_list.h.orig	2021-01-07 00:36:29 UTC
+--- components/feature_engagement/public/feature_list.h.orig	2021-04-14 01:08:45 UTC
 +++ components/feature_engagement/public/feature_list.h
-@@ -126,7 +126,7 @@ DEFINE_VARIATION_PARAM(kIPHDiscoverFeedHeaderFeature,
+@@ -147,7 +147,7 @@ DEFINE_VARIATION_PARAM(kIPHDiscoverFeedHeaderFeature,
                         "IPH_DiscoverFeedHeaderMenu");
  #endif  // defined(OS_IOS)
  
@@ -9,16 +9,16 @@
      defined(OS_CHROMEOS)
  DEFINE_VARIATION_PARAM(kIPHDesktopTabGroupsNewGroupFeature,
                         "IPH_DesktopTabGroupsNewGroup");
-@@ -137,7 +137,7 @@ DEFINE_VARIATION_PARAM(kIPHPasswordsAccountStorageFeat
-                        "IPH_PasswordsAccountStorage");
+@@ -159,7 +159,7 @@ DEFINE_VARIATION_PARAM(kIPHPasswordsAccountStorageFeat
  DEFINE_VARIATION_PARAM(kIPHReopenTabFeature, "IPH_ReopenTab");
  DEFINE_VARIATION_PARAM(kIPHWebUITabStripFeature, "IPH_WebUITabStrip");
+ DEFINE_VARIATION_PARAM(kIPHDesktopPwaInstallFeature, "IPH_DesktopPwaInstall");
 -#endif  // defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) ||
 +#endif  // defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) || defined(OS_BSD) ||
          // defined(OS_CHROMEOS)
  
  }  // namespace
-@@ -196,7 +196,7 @@ constexpr flags_ui::FeatureEntry::FeatureVariation
+@@ -230,7 +230,7 @@ constexpr flags_ui::FeatureEntry::FeatureVariation
          VARIATION_ENTRY(kIPHBadgedReadingListFeature),
          VARIATION_ENTRY(kIPHBadgedTranslateManualTriggerFeature),
          VARIATION_ENTRY(kIPHDiscoverFeedHeaderFeature),
@@ -27,10 +27,10 @@
      defined(OS_CHROMEOS)
          VARIATION_ENTRY(kIPHDesktopTabGroupsNewGroupFeature),
          VARIATION_ENTRY(kIPHFocusModeFeature),
-@@ -205,7 +205,7 @@ constexpr flags_ui::FeatureEntry::FeatureVariation
-         VARIATION_ENTRY(kIPHPasswordsAccountStorageFeature),
+@@ -240,7 +240,7 @@ constexpr flags_ui::FeatureEntry::FeatureVariation
          VARIATION_ENTRY(kIPHReopenTabFeature),
          VARIATION_ENTRY(kIPHWebUITabStripFeature),
+         VARIATION_ENTRY(kIPHDesktopPwaInstallFeature),
 -#endif  // defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) ||
 +#endif  // defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) || defined(OS_BSD) ||
          // defined(OS_CHROMEOS)
diff --git a/devel/electron11/files/patch-components_feed_core_proto_v2_wire_version.proto b/devel/electron12/files/patch-components_feed_core_proto_v2_wire_version.proto
similarity index 100%
rename from devel/electron11/files/patch-components_feed_core_proto_v2_wire_version.proto
rename to devel/electron12/files/patch-components_feed_core_proto_v2_wire_version.proto
diff --git a/devel/electron11/files/patch-components_feed_core_proto_wire_version.proto b/devel/electron12/files/patch-components_feed_core_proto_wire_version.proto
similarity index 100%
rename from devel/electron11/files/patch-components_feed_core_proto_wire_version.proto
rename to devel/electron12/files/patch-components_feed_core_proto_wire_version.proto
diff --git a/devel/electron11/files/patch-components_feed_core_v2_proto__util.cc b/devel/electron12/files/patch-components_feed_core_v2_proto__util.cc
similarity index 82%
rename from devel/electron11/files/patch-components_feed_core_v2_proto__util.cc
rename to devel/electron12/files/patch-components_feed_core_v2_proto__util.cc
index aeeda4b05c37075468c83d9a768a9214b1d55931..4bbfac198e1c005ed91dd61aafbe4249ec135a2c 100644
--- a/devel/electron11/files/patch-components_feed_core_v2_proto__util.cc
+++ b/devel/electron12/files/patch-components_feed_core_v2_proto__util.cc
@@ -1,6 +1,6 @@
---- components/feed/core/v2/proto_util.cc.orig	2021-01-07 00:36:29 UTC
+--- components/feed/core/v2/proto_util.cc.orig	2021-04-14 01:08:45 UTC
 +++ components/feed/core/v2/proto_util.cc
-@@ -79,8 +79,8 @@ feedwire::Version GetPlatformVersionMessage() {
+@@ -81,8 +81,8 @@ feedwire::Version GetPlatformVersionMessage() {
  
    int32_t major, minor, revision;
    base::SysInfo::OperatingSystemVersionNumbers(&major, &minor, &revision);
@@ -11,7 +11,7 @@
    result.set_revision(revision);
  #if defined(OS_ANDROID)
    result.set_api_version(base::android::BuildInfo::GetInstance()->sdk_int());
-@@ -95,8 +95,8 @@ feedwire::Version GetAppVersionMessage(const ChromeInf
+@@ -97,8 +97,8 @@ feedwire::Version GetAppVersionMessage(const ChromeInf
    // Chrome's version is in the format: MAJOR,MINOR,BUILD,PATCH.
    const std::vector<uint32_t>& numbers = chrome_info.version.components();
    if (numbers.size() > 3) {
diff --git a/devel/electron12/files/patch-components_flags__ui_flags__state.cc b/devel/electron12/files/patch-components_flags__ui_flags__state.cc
new file mode 100644
index 0000000000000000000000000000000000000000..2cb87a0d0eebabf1c3a34d6b1223924e6ddb9190
--- /dev/null
+++ b/devel/electron12/files/patch-components_flags__ui_flags__state.cc
@@ -0,0 +1,11 @@
+--- components/flags_ui/flags_state.cc.orig	2021-04-14 01:08:45 UTC
++++ components/flags_ui/flags_state.cc
+@@ -688,7 +688,7 @@ int FlagsState::GetCurrentPlatform() {
+   return kOsWin;
+ #elif BUILDFLAG(IS_CHROMEOS_ASH)
+   return kOsCrOS;
+-#elif (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || \
++#elif (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_FREEBSD) || \
+     defined(OS_OPENBSD)
+   return kOsLinux;
+ #elif defined(OS_ANDROID)
diff --git a/devel/electron11/files/patch-components_gcm__driver_gcm__client.h b/devel/electron12/files/patch-components_gcm__driver_gcm__client.h
similarity index 100%
rename from devel/electron11/files/patch-components_gcm__driver_gcm__client.h
rename to devel/electron12/files/patch-components_gcm__driver_gcm__client.h
diff --git a/devel/electron11/files/patch-components_gcm__driver_gcm__client__impl.cc b/devel/electron12/files/patch-components_gcm__driver_gcm__client__impl.cc
similarity index 100%
rename from devel/electron11/files/patch-components_gcm__driver_gcm__client__impl.cc
rename to devel/electron12/files/patch-components_gcm__driver_gcm__client__impl.cc
diff --git a/devel/electron11/files/patch-components_gwp__asan_BUILD.gn b/devel/electron12/files/patch-components_gwp__asan_BUILD.gn
similarity index 100%
rename from devel/electron11/files/patch-components_gwp__asan_BUILD.gn
rename to devel/electron12/files/patch-components_gwp__asan_BUILD.gn
diff --git a/devel/electron12/files/patch-components_invalidation_impl_invalidation__switches.cc b/devel/electron12/files/patch-components_invalidation_impl_invalidation__switches.cc
new file mode 100644
index 0000000000000000000000000000000000000000..780fbd10c1b792fae01328c6ade5da63c4aa2e93
--- /dev/null
+++ b/devel/electron12/files/patch-components_invalidation_impl_invalidation__switches.cc
@@ -0,0 +1,11 @@
+--- components/invalidation/impl/invalidation_switches.cc.orig	2021-04-14 01:08:45 UTC
++++ components/invalidation/impl/invalidation_switches.cc
+@@ -28,7 +28,7 @@ const base::Feature kFCMInvalidationsForSyncDontCheckV
+ 
+ const base::Feature kSyncInstanceIDTokenTTL {
+   "SyncInstanceIDTokenTTL",
+-#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD) || \
+     defined(OS_CHROMEOS) || defined(OS_IOS)
+       base::FEATURE_ENABLED_BY_DEFAULT
+ #else
diff --git a/devel/electron11/files/patch-components_keyed__service_core_dependency__graph__unittest.cc b/devel/electron12/files/patch-components_keyed__service_core_dependency__graph__unittest.cc
similarity index 100%
rename from devel/electron11/files/patch-components_keyed__service_core_dependency__graph__unittest.cc
rename to devel/electron12/files/patch-components_keyed__service_core_dependency__graph__unittest.cc
diff --git a/devel/electron11/files/patch-components_metrics_BUILD.gn b/devel/electron12/files/patch-components_metrics_BUILD.gn
similarity index 67%
rename from devel/electron11/files/patch-components_metrics_BUILD.gn
rename to devel/electron12/files/patch-components_metrics_BUILD.gn
index 4e920753aedfe9b4d402832da9ab565057c2c7ec..9f1e197b4b8bc1ecfae1f2ee4ae057b9931a071c 100644
--- a/devel/electron11/files/patch-components_metrics_BUILD.gn
+++ b/devel/electron12/files/patch-components_metrics_BUILD.gn
@@ -1,6 +1,6 @@
---- components/metrics/BUILD.gn.orig	2021-01-07 00:36:30 UTC
+--- components/metrics/BUILD.gn.orig	2021-04-14 01:08:45 UTC
 +++ components/metrics/BUILD.gn
-@@ -189,6 +189,11 @@ static_library("metrics") {
+@@ -174,6 +174,11 @@ static_library("metrics") {
    if (is_fuchsia) {
      sources += [ "drive_metrics_provider_fuchsia.cc" ]
    }
diff --git a/devel/electron11/files/patch-components_metrics_drive__metrics__provider__linux.cc b/devel/electron12/files/patch-components_metrics_drive__metrics__provider__linux.cc
similarity index 100%
rename from devel/electron11/files/patch-components_metrics_drive__metrics__provider__linux.cc
rename to devel/electron12/files/patch-components_metrics_drive__metrics__provider__linux.cc
diff --git a/devel/electron11/files/patch-components_metrics_metrics__log.cc b/devel/electron12/files/patch-components_metrics_metrics__log.cc
similarity index 53%
rename from devel/electron11/files/patch-components_metrics_metrics__log.cc
rename to devel/electron12/files/patch-components_metrics_metrics__log.cc
index 584e95b8896923710ddae5a973f89eb554daa244..266722a9183fde54ee9eac2587e32490dc48341e 100644
--- a/devel/electron11/files/patch-components_metrics_metrics__log.cc
+++ b/devel/electron12/files/patch-components_metrics_metrics__log.cc
@@ -1,11 +1,11 @@
---- components/metrics/metrics_log.cc.orig	2021-01-07 00:36:30 UTC
+--- components/metrics/metrics_log.cc.orig	2021-04-14 01:08:45 UTC
 +++ components/metrics/metrics_log.cc
-@@ -224,7 +224,7 @@ void MetricsLog::RecordCoreSystemProfile(
+@@ -238,7 +238,7 @@ void MetricsLog::RecordCoreSystemProfile(
  // OperatingSystemVersion refers to the ChromeOS release version.
- #if defined(OS_CHROMEOS)
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
    os->set_kernel_version(base::SysInfo::KernelVersion());
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
    // Linux operating system version is copied over into kernel version to be
    // consistent.
    os->set_kernel_version(base::SysInfo::OperatingSystemVersion());
diff --git a/devel/electron11/files/patch-components_neterror_resources_neterror.js b/devel/electron12/files/patch-components_neterror_resources_neterror.js
similarity index 67%
rename from devel/electron11/files/patch-components_neterror_resources_neterror.js
rename to devel/electron12/files/patch-components_neterror_resources_neterror.js
index 557121bd5ff1c3117c6807c82cc95c88634922cf..3dc4d8eca446a2a3f8557c9e905eda36f33f327b 100644
--- a/devel/electron11/files/patch-components_neterror_resources_neterror.js
+++ b/devel/electron12/files/patch-components_neterror_resources_neterror.js
@@ -1,6 +1,6 @@
---- components/neterror/resources/neterror.js.orig	2021-01-07 00:36:30 UTC
+--- components/neterror/resources/neterror.js.orig	2021-04-14 01:08:45 UTC
 +++ components/neterror/resources/neterror.js
-@@ -153,7 +153,7 @@ function detailsButtonClick() {
+@@ -144,7 +144,7 @@ function detailsButtonClick() {
  }
  
  let primaryControlOnLeft = true;
diff --git a/devel/electron11/files/patch-components_network__session__configurator_browser_network__session__configurator.cc b/devel/electron12/files/patch-components_network__session__configurator_browser_network__session__configurator.cc
similarity index 81%
rename from devel/electron11/files/patch-components_network__session__configurator_browser_network__session__configurator.cc
rename to devel/electron12/files/patch-components_network__session__configurator_browser_network__session__configurator.cc
index 59809db4d6f5e064b3cbe5d36754f8a93cbfa720..35df5f24b791906e84a1fe188764c99f4ce64c30 100644
--- a/devel/electron11/files/patch-components_network__session__configurator_browser_network__session__configurator.cc
+++ b/devel/electron12/files/patch-components_network__session__configurator_browser_network__session__configurator.cc
@@ -1,6 +1,6 @@
---- components/network_session_configurator/browser/network_session_configurator.cc.orig	2021-01-07 00:36:30 UTC
+--- components/network_session_configurator/browser/network_session_configurator.cc.orig	2021-04-14 01:08:45 UTC
 +++ components/network_session_configurator/browser/network_session_configurator.cc
-@@ -749,7 +749,7 @@ net::URLRequestContextBuilder::HttpCacheParams::Type C
+@@ -802,7 +802,7 @@ net::URLRequestContextBuilder::HttpCacheParams::Type C
    }
  #endif  // #if !defined(OS_ANDROID)
  
diff --git a/devel/electron11/files/patch-components_new__or__sad__tab__strings.grdp b/devel/electron12/files/patch-components_new__or__sad__tab__strings.grdp
similarity index 100%
rename from devel/electron11/files/patch-components_new__or__sad__tab__strings.grdp
rename to devel/electron12/files/patch-components_new__or__sad__tab__strings.grdp
diff --git a/devel/electron12/files/patch-components_os__crypt_os__crypt.h b/devel/electron12/files/patch-components_os__crypt_os__crypt.h
new file mode 100644
index 0000000000000000000000000000000000000000..5fc427a1e414e121ec2c3ab623544874c0cc4dcc
--- /dev/null
+++ b/devel/electron12/files/patch-components_os__crypt_os__crypt.h
@@ -0,0 +1,51 @@
+--- components/os_crypt/os_crypt.h.orig	2021-04-14 01:08:46 UTC
++++ components/os_crypt/os_crypt.h
+@@ -18,9 +18,9 @@
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ class KeyStorageLinux;
+-#endif  // defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#endif  // defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ 
+ #if defined(OS_WIN) || defined(OS_MAC)
+ class PrefRegistrySimple;
+@@ -39,16 +39,16 @@ class OSCrypt {
+  public:
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   // Set the configuration of OSCrypt.
+   static COMPONENT_EXPORT(OS_CRYPT) void SetConfig(
+       std::unique_ptr<os_crypt::Config> config);
+-#endif  // defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#endif  // defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+ #if defined(OS_APPLE) || defined(OS_WIN) || \
+-    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
+   // On Linux returns true iff the real secret key (not hardcoded one) is
+   // available. On MacOS returns true if Keychain is available (for mock
+   // Keychain it returns true if not using locked Keychain, false if using
+@@ -142,7 +142,7 @@ class OSCrypt {
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // For unit testing purposes, inject methods to be used.
+ // |get_key_storage_mock| provides the desired |KeyStorage| implementation.
+ // If the provider returns |nullptr|, a hardcoded password will be used.
+@@ -157,6 +157,6 @@ void UseMockKeyStorageForTesting(
+ // Clears any caching and most lazy initialisations performed by the production
+ // code. Should be used after any test which required a password.
+ COMPONENT_EXPORT(OS_CRYPT) void ClearCacheForTesting();
+-#endif  // defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#endif  // defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ 
+ #endif  // COMPONENTS_OS_CRYPT_OS_CRYPT_H_
diff --git a/devel/electron12/files/patch-components_os__crypt_os__crypt__unittest.cc b/devel/electron12/files/patch-components_os__crypt_os__crypt__unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..0a322146b713ffcaa0118144743ebbfbcbd94cf0
--- /dev/null
+++ b/devel/electron12/files/patch-components_os__crypt_os__crypt__unittest.cc
@@ -0,0 +1,11 @@
+--- components/os_crypt/os_crypt_unittest.cc.orig	2021-04-14 01:08:46 UTC
++++ components/os_crypt/os_crypt_unittest.cc
+@@ -21,7 +21,7 @@
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #include "components/os_crypt/os_crypt_mocker_linux.h"
+ #endif
+ 
diff --git a/devel/electron12/files/patch-components_permissions_prediction__service_prediction__service__common.cc b/devel/electron12/files/patch-components_permissions_prediction__service_prediction__service__common.cc
new file mode 100644
index 0000000000000000000000000000000000000000..67e2c03c86bfab3df9ee451a45059bb476425d76
--- /dev/null
+++ b/devel/electron12/files/patch-components_permissions_prediction__service_prediction__service__common.cc
@@ -0,0 +1,11 @@
+--- components/permissions/prediction_service/prediction_service_common.cc.orig	2021-04-14 01:08:46 UTC
++++ components/permissions/prediction_service/prediction_service_common.cc
+@@ -11,7 +11,7 @@ namespace permissions {
+ ClientFeatures_Platform GetCurrentPlatformProto() {
+ #if defined(OS_WIN)
+   return permissions::ClientFeatures_Platform_PLATFORM_WINDOWS;
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   return permissions::ClientFeatures_Platform_PLATFORM_LINUX;
+ #elif defined(OS_ANDROID)
+   return permissions::ClientFeatures_Platform_PLATFORM_ANDROID;
diff --git a/devel/electron11/files/patch-components_plugins_renderer_plugin__placeholder.cc b/devel/electron12/files/patch-components_plugins_renderer_plugin__placeholder.cc
similarity index 100%
rename from devel/electron11/files/patch-components_plugins_renderer_plugin__placeholder.cc
rename to devel/electron12/files/patch-components_plugins_renderer_plugin__placeholder.cc
diff --git a/devel/electron11/files/patch-components_policy_core_browser_policy__pref__mapping__test.cc b/devel/electron12/files/patch-components_policy_core_browser_policy__pref__mapping__test.cc
similarity index 70%
rename from devel/electron11/files/patch-components_policy_core_browser_policy__pref__mapping__test.cc
rename to devel/electron12/files/patch-components_policy_core_browser_policy__pref__mapping__test.cc
index 4d909bf422629704388ad6933a4454c230627016..e36db7cdee13c150029cc27827005ec4dc055c91 100644
--- a/devel/electron11/files/patch-components_policy_core_browser_policy__pref__mapping__test.cc
+++ b/devel/electron12/files/patch-components_policy_core_browser_policy__pref__mapping__test.cc
@@ -1,8 +1,8 @@
---- components/policy/core/browser/policy_pref_mapping_test.cc.orig	2021-01-07 00:36:30 UTC
+--- components/policy/core/browser/policy_pref_mapping_test.cc.orig	2021-04-14 01:08:46 UTC
 +++ components/policy/core/browser/policy_pref_mapping_test.cc
-@@ -270,6 +270,8 @@ class PolicyTestCase {
+@@ -285,6 +285,8 @@ class PolicyTestCase {
      const std::string os("chromeos");
- #elif defined(OS_LINUX)
+ #elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
      const std::string os("linux");
 +#elif defined(OS_FREEBSD)
 +    const std::string os("freebsd");
diff --git a/devel/electron12/files/patch-components_policy_core_common_cloud_cloud__policy__util.cc b/devel/electron12/files/patch-components_policy_core_common_cloud_cloud__policy__util.cc
new file mode 100644
index 0000000000000000000000000000000000000000..1503aef50f12bdb166d919b9a53b0a2e67684f57
--- /dev/null
+++ b/devel/electron12/files/patch-components_policy_core_common_cloud_cloud__policy__util.cc
@@ -0,0 +1,58 @@
+--- components/policy/core/common/cloud/cloud_policy_util.cc.orig	2021-04-14 01:08:46 UTC
++++ components/policy/core/common/cloud/cloud_policy_util.cc
+@@ -18,7 +18,7 @@
+ #include <wincred.h>
+ #endif
+ 
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_APPLE)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_APPLE) || defined(OS_BSD)
+ #include <pwd.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+@@ -35,7 +35,7 @@
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #include <limits.h>  // For HOST_NAME_MAX
+ #endif
+ 
+@@ -71,7 +71,7 @@
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #include "base/system/sys_info.h"
+ #endif
+ 
+@@ -100,6 +100,10 @@ std::string GetMachineName() {
+   if (gethostname(hostname, HOST_NAME_MAX) == 0)  // Success.
+     return hostname;
+   return std::string();
++#elif defined(OS_BSD)
++  char hostname[MAXHOSTNAMELEN];
++  if (gethostname(hostname, MAXHOSTNAMELEN) == 0)
++    return hostname;
+ #elif defined(OS_IOS)
+   // Use the Vendor ID as the machine name.
+   return ios::device_util::GetVendorId();
+@@ -148,7 +152,7 @@ std::string GetMachineName() {
+ }
+ 
+ std::string GetOSVersion() {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_APPLE)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_APPLE) || defined(OS_BSD)
+   return base::SysInfo::OperatingSystemVersion();
+ #elif defined(OS_WIN)
+   base::win::OSInfo::VersionNumber version_number =
+@@ -171,7 +175,7 @@ std::string GetOSArchitecture() {
+ }
+ 
+ std::string GetOSUsername() {
+-#if (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_APPLE)
++#if (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_APPLE) || defined(OS_BSD)
+   struct passwd* creds = getpwuid(getuid());
+   if (!creds || !creds->pw_name)
+     return std::string();
diff --git a/devel/electron11/files/patch-components_policy_core_common_schema.cc b/devel/electron12/files/patch-components_policy_core_common_schema.cc
similarity index 100%
rename from devel/electron11/files/patch-components_policy_core_common_schema.cc
rename to devel/electron12/files/patch-components_policy_core_common_schema.cc
diff --git a/devel/electron11/files/patch-components_policy_resources_policy__templates.json b/devel/electron12/files/patch-components_policy_resources_policy__templates.json
similarity index 92%
rename from devel/electron11/files/patch-components_policy_resources_policy__templates.json
rename to devel/electron12/files/patch-components_policy_resources_policy__templates.json
index 4f786bb27040fd4a374a3ae8a49f51fef9a6654b..b14d6246808b52a51733809f49730733784518eb 100644
--- a/devel/electron11/files/patch-components_policy_resources_policy__templates.json
+++ b/devel/electron12/files/patch-components_policy_resources_policy__templates.json
@@ -1,6 +1,6 @@
---- components/policy/resources/policy_templates.json.orig	2021-01-07 00:36:30 UTC
+--- components/policy/resources/policy_templates.json.orig	2021-04-14 01:08:46 UTC
 +++ components/policy/resources/policy_templates.json
-@@ -1198,7 +1198,7 @@
+@@ -1220,7 +1220,7 @@
        'owners': ['file://components/policy/resources/OWNERS'],
        'type': 'string',
        'schema': { 'type': 'string' },
@@ -9,7 +9,7 @@
        'features': {
          'can_be_recommended': True,
          'dynamic_refresh': True,
-@@ -1224,7 +1224,7 @@
+@@ -1246,7 +1246,7 @@
        'owners': ['file://components/policy/resources/OWNERS'],
        'type': 'main',
        'schema': { 'type': 'boolean' },
@@ -18,7 +18,7 @@
        'features': {
          'can_be_recommended': True,
          'dynamic_refresh': True,
-@@ -1245,7 +1245,7 @@
+@@ -1267,7 +1267,7 @@
        'owners': ['file://components/policy/resources/OWNERS'],
        'type': 'string',
        'schema': { 'type': 'string' },
@@ -27,7 +27,7 @@
        'features': {
          'can_be_recommended': True,
          'dynamic_refresh': True,
-@@ -4285,7 +4285,7 @@
+@@ -4507,7 +4507,7 @@
        'owners': ['file://components/policy/resources/OWNERS'],
        'type': 'string',
        'schema': { 'type': 'string' },
@@ -36,7 +36,7 @@
        'features': {
          'dynamic_refresh': False,
          'per_profile': False,
-@@ -4341,7 +4341,7 @@
+@@ -4563,7 +4563,7 @@
        'owners': ['file://components/policy/resources/OWNERS'],
        'type': 'main',
        'schema': { 'type': 'boolean' },
@@ -45,8 +45,8 @@
        'features': {
          'dynamic_refresh': True,
          'per_profile': False,
-@@ -8423,7 +8423,7 @@
-       'owners': ['file://src/net/cert/OWNERS'],
+@@ -8774,7 +8774,7 @@
+       'owners': ['file://net/cert/OWNERS'],
        'type': 'main',
        'schema': { 'type': 'boolean' },
 -      'supported_on': ['chrome_os:30-', 'chrome.linux:30-', 'chrome.win:30-'],
@@ -54,7 +54,7 @@
        'features': {
          'dynamic_refresh': True,
          'per_profile': False,
-@@ -9998,7 +9998,7 @@
+@@ -10360,7 +10360,7 @@
        'owners': ['file://components/policy/resources/OWNERS'],
        'type': 'main',
        'schema': { 'type': 'boolean' },
@@ -63,7 +63,7 @@
        'features': {
          'can_be_recommended': True,
          'dynamic_refresh': True,
-@@ -10733,7 +10733,7 @@
+@@ -11152,7 +11152,7 @@
        'owners': ['file://components/policy/resources/OWNERS'],
        'type': 'main',
        'schema': { 'type': 'boolean' },
diff --git a/devel/electron11/files/patch-components_policy_tools_generate__policy__source.py b/devel/electron12/files/patch-components_policy_tools_generate__policy__source.py
similarity index 100%
rename from devel/electron11/files/patch-components_policy_tools_generate__policy__source.py
rename to devel/electron12/files/patch-components_policy_tools_generate__policy__source.py
diff --git a/devel/electron11/files/patch-components_previews_core_previews__features.cc b/devel/electron12/files/patch-components_previews_core_previews__features.cc
similarity index 85%
rename from devel/electron11/files/patch-components_previews_core_previews__features.cc
rename to devel/electron12/files/patch-components_previews_core_previews__features.cc
index 3d6ad28767febebde9107b79677541c817ea4d4c..d5a8b4e1983c05f052375a1764bf97b7d5bc2f46 100644
--- a/devel/electron11/files/patch-components_previews_core_previews__features.cc
+++ b/devel/electron12/files/patch-components_previews_core_previews__features.cc
@@ -1,4 +1,4 @@
---- components/previews/core/previews_features.cc.orig	2021-01-07 00:36:31 UTC
+--- components/previews/core/previews_features.cc.orig	2021-04-14 01:08:46 UTC
 +++ components/previews/core/previews_features.cc
 @@ -14,12 +14,12 @@ namespace features {
  // are enabled are controlled by other features.
@@ -15,4 +15,4 @@
 +#endif  // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  };
  
- // Enables the Offline previews on android slow connections.
+ // Provides slow page triggering parameters.
diff --git a/devel/electron12/files/patch-components_safe__browsing_core_realtime_url__lookup__service__base.cc b/devel/electron12/files/patch-components_safe__browsing_core_realtime_url__lookup__service__base.cc
new file mode 100644
index 0000000000000000000000000000000000000000..6c83176340cdefb86e7aca5a6e810555cc95b0d8
--- /dev/null
+++ b/devel/electron12/files/patch-components_safe__browsing_core_realtime_url__lookup__service__base.cc
@@ -0,0 +1,11 @@
+--- components/safe_browsing/core/realtime/url_lookup_service_base.cc.orig	2021-04-14 01:08:46 UTC
++++ components/safe_browsing/core/realtime/url_lookup_service_base.cc
+@@ -108,7 +108,7 @@ RTLookupRequest::OSType GetRTLookupRequestOSType() {
+   return RTLookupRequest::OS_TYPE_FUCHSIA;
+ #elif defined(OS_IOS)
+   return RTLookupRequest::OS_TYPE_IOS;
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   return RTLookupRequest::OS_TYPE_LINUX;
+ #elif defined(OS_MAC)
+   return RTLookupRequest::OS_TYPE_MAC;
diff --git a/devel/electron11/files/patch-components_safe__browsing_core_resources_gen__file__type__proto.py b/devel/electron12/files/patch-components_safe__browsing_core_resources_gen__file__type__proto.py
similarity index 100%
rename from devel/electron11/files/patch-components_safe__browsing_core_resources_gen__file__type__proto.py
rename to devel/electron12/files/patch-components_safe__browsing_core_resources_gen__file__type__proto.py
diff --git a/devel/electron11/files/patch-components_security__interstitials_content_captive__portal__blocking__page.cc b/devel/electron12/files/patch-components_security__interstitials_content_captive__portal__blocking__page.cc
similarity index 100%
rename from devel/electron11/files/patch-components_security__interstitials_content_captive__portal__blocking__page.cc
rename to devel/electron12/files/patch-components_security__interstitials_content_captive__portal__blocking__page.cc
diff --git a/devel/electron11/files/patch-components_security__interstitials_content_utils.cc b/devel/electron12/files/patch-components_security__interstitials_content_utils.cc
similarity index 86%
rename from devel/electron11/files/patch-components_security__interstitials_content_utils.cc
rename to devel/electron12/files/patch-components_security__interstitials_content_utils.cc
index aabc09e177ca891c223d53bbca4f5b23ff4bdfa0..bc91a5c8e092f1c20e79a0180cdb8ef0167ef196 100644
--- a/devel/electron11/files/patch-components_security__interstitials_content_utils.cc
+++ b/devel/electron12/files/patch-components_security__interstitials_content_utils.cc
@@ -1,6 +1,6 @@
---- components/security_interstitials/content/utils.cc.orig	2021-01-07 00:36:31 UTC
+--- components/security_interstitials/content/utils.cc.orig	2021-04-14 01:08:46 UTC
 +++ components/security_interstitials/content/utils.cc
-@@ -31,7 +31,7 @@ void LaunchDateAndTimeSettings() {
+@@ -32,7 +32,7 @@ void LaunchDateAndTimeSettings() {
  #if defined(OS_ANDROID)
    JNIEnv* env = base::android::AttachCurrentThread();
    Java_DateAndTimeSettingsHelper_openDateAndTimeSettings(env);
diff --git a/devel/electron11/files/patch-components_services_paint__preview__compositor_paint__preview__compositor__collection__impl.cc b/devel/electron12/files/patch-components_services_paint__preview__compositor_paint__preview__compositor__collection__impl.cc
similarity index 87%
rename from devel/electron11/files/patch-components_services_paint__preview__compositor_paint__preview__compositor__collection__impl.cc
rename to devel/electron12/files/patch-components_services_paint__preview__compositor_paint__preview__compositor__collection__impl.cc
index ee0bffd2cc4d732a7755e845e8ad9e1ee86fff36..b9eed8746860ee58bd3d490399cd37cc0317b06f 100644
--- a/devel/electron11/files/patch-components_services_paint__preview__compositor_paint__preview__compositor__collection__impl.cc
+++ b/devel/electron12/files/patch-components_services_paint__preview__compositor_paint__preview__compositor__collection__impl.cc
@@ -1,4 +1,4 @@
---- components/services/paint_preview_compositor/paint_preview_compositor_collection_impl.cc.orig	2021-01-07 00:36:31 UTC
+--- components/services/paint_preview_compositor/paint_preview_compositor_collection_impl.cc.orig	2021-04-14 01:08:46 UTC
 +++ components/services/paint_preview_compositor/paint_preview_compositor_collection_impl.cc
 @@ -15,7 +15,7 @@
  
@@ -9,7 +9,7 @@
  #include "components/services/font/public/cpp/font_loader.h"
  #endif
  
-@@ -35,7 +35,7 @@ PaintPreviewCompositorCollectionImpl::PaintPreviewComp
+@@ -36,7 +36,7 @@ PaintPreviewCompositorCollectionImpl::PaintPreviewComp
      // Initialize font access for Skia.
  #if defined(OS_WIN)
    content::InitializeDWriteFontProxy();
@@ -18,7 +18,7 @@
    mojo::PendingRemote<font_service::mojom::FontService> font_service;
    content::UtilityThread::Get()->BindHostReceiver(
        font_service.InitWithNewPipeAndPassReceiver());
-@@ -54,7 +54,7 @@ PaintPreviewCompositorCollectionImpl::PaintPreviewComp
+@@ -55,7 +55,7 @@ PaintPreviewCompositorCollectionImpl::PaintPreviewComp
    // encoding to PNG or we could provide our own codec implementations.
  
    // Sanity check that fonts are working.
diff --git a/devel/electron11/files/patch-components_services_paint__preview__compositor_paint__preview__compositor__collection__impl.h b/devel/electron12/files/patch-components_services_paint__preview__compositor_paint__preview__compositor__collection__impl.h
similarity index 86%
rename from devel/electron11/files/patch-components_services_paint__preview__compositor_paint__preview__compositor__collection__impl.h
rename to devel/electron12/files/patch-components_services_paint__preview__compositor_paint__preview__compositor__collection__impl.h
index 9c0974ed494f68aa82b1d6d5efbd5b3c9003477c..af53d3c946b4cdb29f148eca0b03e069dfc804a8 100644
--- a/devel/electron11/files/patch-components_services_paint__preview__compositor_paint__preview__compositor__collection__impl.h
+++ b/devel/electron12/files/patch-components_services_paint__preview__compositor_paint__preview__compositor__collection__impl.h
@@ -1,4 +1,4 @@
---- components/services/paint_preview_compositor/paint_preview_compositor_collection_impl.h.orig	2021-01-07 00:36:31 UTC
+--- components/services/paint_preview_compositor/paint_preview_compositor_collection_impl.h.orig	2021-04-14 01:08:46 UTC
 +++ components/services/paint_preview_compositor/paint_preview_compositor_collection_impl.h
 @@ -20,7 +20,7 @@
  #include "mojo/public/cpp/bindings/pending_receiver.h"
@@ -9,7 +9,7 @@
  #include "components/services/font/public/cpp/font_loader.h"
  #include "third_party/skia/include/core/SkRefCnt.h"
  #endif
-@@ -74,7 +74,7 @@ class PaintPreviewCompositorCollectionImpl
+@@ -70,7 +70,7 @@ class PaintPreviewCompositorCollectionImpl
                   std::unique_ptr<PaintPreviewCompositorImpl>>
        compositors_;
  
diff --git a/devel/electron11/files/patch-components_storage__monitor_BUILD.gn b/devel/electron12/files/patch-components_storage__monitor_BUILD.gn
similarity index 53%
rename from devel/electron11/files/patch-components_storage__monitor_BUILD.gn
rename to devel/electron12/files/patch-components_storage__monitor_BUILD.gn
index 5454726c66420ddab17cba6349e71c6aa9a52120..5e00f8e62fc753aa524bc48bd34375a631f06ff2 100644
--- a/devel/electron11/files/patch-components_storage__monitor_BUILD.gn
+++ b/devel/electron12/files/patch-components_storage__monitor_BUILD.gn
@@ -1,6 +1,6 @@
---- components/storage_monitor/BUILD.gn.orig	2021-01-07 00:36:31 UTC
+--- components/storage_monitor/BUILD.gn.orig	2021-04-14 01:08:46 UTC
 +++ components/storage_monitor/BUILD.gn
-@@ -88,6 +88,13 @@ static_library("storage_monitor") {
+@@ -83,6 +83,13 @@ static_library("storage_monitor") {
      }
    }
  
@@ -12,5 +12,5 @@
 +  }
 +
    if (use_udev) {
-     sources += [
-       "udev_util_linux.cc",
+     if (is_linux || is_chromeos) {
+       sources += [
diff --git a/devel/electron11/files/patch-components_storage__monitor_removable__device__constants.cc b/devel/electron12/files/patch-components_storage__monitor_removable__device__constants.cc
similarity index 100%
rename from devel/electron11/files/patch-components_storage__monitor_removable__device__constants.cc
rename to devel/electron12/files/patch-components_storage__monitor_removable__device__constants.cc
diff --git a/devel/electron11/files/patch-components_storage__monitor_removable__device__constants.h b/devel/electron12/files/patch-components_storage__monitor_removable__device__constants.h
similarity index 100%
rename from devel/electron11/files/patch-components_storage__monitor_removable__device__constants.h
rename to devel/electron12/files/patch-components_storage__monitor_removable__device__constants.h
diff --git a/devel/electron11/files/patch-components_storage__monitor_storage__monitor__freebsd.cc b/devel/electron12/files/patch-components_storage__monitor_storage__monitor__freebsd.cc
similarity index 100%
rename from devel/electron11/files/patch-components_storage__monitor_storage__monitor__freebsd.cc
rename to devel/electron12/files/patch-components_storage__monitor_storage__monitor__freebsd.cc
diff --git a/devel/electron11/files/patch-components_storage__monitor_storage__monitor__freebsd.h b/devel/electron12/files/patch-components_storage__monitor_storage__monitor__freebsd.h
similarity index 100%
rename from devel/electron11/files/patch-components_storage__monitor_storage__monitor__freebsd.h
rename to devel/electron12/files/patch-components_storage__monitor_storage__monitor__freebsd.h
diff --git a/devel/electron11/files/patch-components_sync__device__info_local__device__info__util.cc b/devel/electron12/files/patch-components_sync__device__info_local__device__info__util.cc
similarity index 61%
rename from devel/electron11/files/patch-components_sync__device__info_local__device__info__util.cc
rename to devel/electron12/files/patch-components_sync__device__info_local__device__info__util.cc
index 3b1f202bf73597bee5845faa3ba706c1a8fe06a6..c93868bee26626d21c74cd568eb194235ab7fbec 100644
--- a/devel/electron11/files/patch-components_sync__device__info_local__device__info__util.cc
+++ b/devel/electron12/files/patch-components_sync__device__info_local__device__info__util.cc
@@ -1,11 +1,11 @@
---- components/sync_device_info/local_device_info_util.cc.orig	2021-01-07 00:36:31 UTC
+--- components/sync_device_info/local_device_info_util.cc.orig	2021-04-14 01:08:47 UTC
 +++ components/sync_device_info/local_device_info_util.cc
-@@ -52,7 +52,7 @@ std::string GetPersonalizableDeviceNameInternal();
+@@ -53,7 +53,7 @@ std::string GetPersonalizableDeviceNameInternal();
  sync_pb::SyncEnums::DeviceType GetLocalDeviceType() {
- #if defined(OS_CHROMEOS)
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
    return sync_pb::SyncEnums_DeviceType_TYPE_CROS;
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
    return sync_pb::SyncEnums_DeviceType_TYPE_LINUX;
  #elif defined(OS_ANDROID) || defined(OS_IOS)
    return ui::GetDeviceFormFactor() == ui::DEVICE_FORM_FACTOR_TABLET
diff --git a/devel/electron11/files/patch-components_sync__device__info_local__device__info__util__linux.cc b/devel/electron12/files/patch-components_sync__device__info_local__device__info__util__linux.cc
similarity index 79%
rename from devel/electron11/files/patch-components_sync__device__info_local__device__info__util__linux.cc
rename to devel/electron12/files/patch-components_sync__device__info_local__device__info__util__linux.cc
index 126a31a8fdd4d2ea4692471d5f4e68c25d3f98da..7ffeb716b5f4cfbb30cc23d7be115102f0a2249d 100644
--- a/devel/electron11/files/patch-components_sync__device__info_local__device__info__util__linux.cc
+++ b/devel/electron12/files/patch-components_sync__device__info_local__device__info__util__linux.cc
@@ -1,7 +1,7 @@
---- components/sync_device_info/local_device_info_util_linux.cc.orig	2021-01-07 00:36:31 UTC
+--- components/sync_device_info/local_device_info_util_linux.cc.orig	2021-04-14 01:08:47 UTC
 +++ components/sync_device_info/local_device_info_util_linux.cc
-@@ -37,8 +37,9 @@ std::string GetPersonalizableDeviceNameInternal() {
- #if defined(OS_CHROMEOS)
+@@ -38,8 +38,9 @@ std::string GetPersonalizableDeviceNameInternal() {
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
    return GetChromeOSDeviceNameFromType();
  #else
 -  char hostname[HOST_NAME_MAX];
diff --git a/devel/electron11/files/patch-components_update__client_update__query__params.cc b/devel/electron12/files/patch-components_update__client_update__query__params.cc
similarity index 61%
rename from devel/electron11/files/patch-components_update__client_update__query__params.cc
rename to devel/electron12/files/patch-components_update__client_update__query__params.cc
index 8da0a523bff2cba2d8cb6c3d4b6f9f80d053462b..d5c8427cfcc878b3725bfd03fb5a70e00d89a21b 100644
--- a/devel/electron11/files/patch-components_update__client_update__query__params.cc
+++ b/devel/electron12/files/patch-components_update__client_update__query__params.cc
@@ -1,6 +1,6 @@
---- components/update_client/update_query_params.cc.orig	2021-01-07 00:36:32 UTC
+--- components/update_client/update_query_params.cc.orig	2021-04-14 01:08:47 UTC
 +++ components/update_client/update_query_params.cc
-@@ -39,6 +39,8 @@ const char kOs[] =
+@@ -40,6 +40,8 @@ const char kOs[] =
      "fuchsia";
  #elif defined(OS_OPENBSD)
      "openbsd";
diff --git a/devel/electron11/files/patch-components_url__formatter_spoof__checks_idn__spoof__checker.cc b/devel/electron12/files/patch-components_url__formatter_spoof__checks_idn__spoof__checker.cc
similarity index 85%
rename from devel/electron11/files/patch-components_url__formatter_spoof__checks_idn__spoof__checker.cc
rename to devel/electron12/files/patch-components_url__formatter_spoof__checks_idn__spoof__checker.cc
index 2a44d68c3fe04a275a5fb30b53f8d01dbd2752a0..f01647743c7b75e4b4de3b7a9baa1cd6d06444e8 100644
--- a/devel/electron11/files/patch-components_url__formatter_spoof__checks_idn__spoof__checker.cc
+++ b/devel/electron12/files/patch-components_url__formatter_spoof__checks_idn__spoof__checker.cc
@@ -1,6 +1,6 @@
---- components/url_formatter/spoof_checks/idn_spoof_checker.cc.orig	2021-01-07 00:36:32 UTC
+--- components/url_formatter/spoof_checks/idn_spoof_checker.cc.orig	2021-04-14 01:08:47 UTC
 +++ components/url_formatter/spoof_checks/idn_spoof_checker.cc
-@@ -291,7 +291,7 @@ IDNSpoofChecker::IDNSpoofChecker() {
+@@ -292,7 +292,7 @@ IDNSpoofChecker::IDNSpoofChecker() {
    // The ideal fix would be to change the omnibox font used for Thai. In
    // that case, the Linux-only list should be revisited and potentially
    // removed.
diff --git a/devel/electron11/files/patch-components_url__matcher_regex__set__matcher.cc b/devel/electron12/files/patch-components_url__matcher_regex__set__matcher.cc
similarity index 100%
rename from devel/electron11/files/patch-components_url__matcher_regex__set__matcher.cc
rename to devel/electron12/files/patch-components_url__matcher_regex__set__matcher.cc
diff --git a/devel/electron11/files/patch-components_url__matcher_url__matcher__factory.cc b/devel/electron12/files/patch-components_url__matcher_url__matcher__factory.cc
similarity index 100%
rename from devel/electron11/files/patch-components_url__matcher_url__matcher__factory.cc
rename to devel/electron12/files/patch-components_url__matcher_url__matcher__factory.cc
diff --git a/devel/electron12/files/patch-components_viz_common_features.cc b/devel/electron12/files/patch-components_viz_common_features.cc
new file mode 100644
index 0000000000000000000000000000000000000000..2e293ec91381d1a3dc68f0b4a63a1003b8ee45e9
--- /dev/null
+++ b/devel/electron12/files/patch-components_viz_common_features.cc
@@ -0,0 +1,11 @@
+--- components/viz/common/features.cc.orig	2021-04-14 01:08:47 UTC
++++ components/viz/common/features.cc
+@@ -32,7 +32,7 @@ const base::Feature kEnableOverlayPrioritization {
+ // Use the SkiaRenderer.
+ const base::Feature kUseSkiaRenderer {
+   "UseSkiaRenderer",
+-#if defined(OS_WIN) || (defined(OS_LINUX) && !(BUILDFLAG(IS_CHROMEOS_ASH) || \
++#if defined(OS_WIN) || defined(OS_BSD) || (defined(OS_LINUX) && !(BUILDFLAG(IS_CHROMEOS_ASH) || \
+                                                BUILDFLAG(IS_CHROMECAST)))
+       base::FEATURE_ENABLED_BY_DEFAULT
+ #else
diff --git a/devel/electron11/files/patch-components_viz_common_gpu_dawn__context__provider.cc b/devel/electron12/files/patch-components_viz_common_gpu_dawn__context__provider.cc
similarity index 100%
rename from devel/electron11/files/patch-components_viz_common_gpu_dawn__context__provider.cc
rename to devel/electron12/files/patch-components_viz_common_gpu_dawn__context__provider.cc
diff --git a/devel/electron12/files/patch-components_viz_host_host__display__client.cc b/devel/electron12/files/patch-components_viz_host_host__display__client.cc
new file mode 100644
index 0000000000000000000000000000000000000000..6cdc93da52d646d43e97faa1ef6dc4eff9863fff
--- /dev/null
+++ b/devel/electron12/files/patch-components_viz_host_host__display__client.cc
@@ -0,0 +1,11 @@
+--- components/viz/host/host_display_client.cc.orig	2021-04-22 07:51:51 UTC
++++ components/viz/host/host_display_client.cc
+@@ -64,7 +64,7 @@ void HostDisplayClient::CreateLayeredWindowUpdater(
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ void HostDisplayClient::DidCompleteSwapWithNewSize(const gfx::Size& size) {
+   NOTIMPLEMENTED();
+ }
diff --git a/devel/electron12/files/patch-components_viz_host_host__display__client.h b/devel/electron12/files/patch-components_viz_host_host__display__client.h
new file mode 100644
index 0000000000000000000000000000000000000000..283e399a431e6f827ded48498ec0a1bab4e375aa
--- /dev/null
+++ b/devel/electron12/files/patch-components_viz_host_host__display__client.h
@@ -0,0 +1,11 @@
+--- components/viz/host/host_display_client.h.orig	2021-04-22 07:51:51 UTC
++++ components/viz/host/host_display_client.h
+@@ -45,7 +45,7 @@ class VIZ_HOST_EXPORT HostDisplayClient : public mojom
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   void DidCompleteSwapWithNewSize(const gfx::Size& size) override;
+ #endif
+ 
diff --git a/devel/electron12/files/patch-components_viz_service_display__embedder_software__output__surface.cc b/devel/electron12/files/patch-components_viz_service_display__embedder_software__output__surface.cc
new file mode 100644
index 0000000000000000000000000000000000000000..5b3a72c9506224c8edd087d739478cc90ef78c16
--- /dev/null
+++ b/devel/electron12/files/patch-components_viz_service_display__embedder_software__output__surface.cc
@@ -0,0 +1,20 @@
+--- components/viz/service/display_embedder/software_output_surface.cc.orig	2021-04-14 01:08:47 UTC
++++ components/viz/service/display_embedder/software_output_surface.cc
+@@ -115,7 +115,7 @@ void SoftwareOutputSurface::SwapBuffersCallback(base::
+       now.SnappedToNextTick(refresh_timebase_, refresh_interval_) - now;
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   if (needs_swap_size_notifications_)
+     client_->DidSwapWithSize(pixel_size);
+ #endif
+@@ -146,7 +146,7 @@ gfx::OverlayTransform SoftwareOutputSurface::GetDispla
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ void SoftwareOutputSurface::SetNeedsSwapSizeNotifications(
+     bool needs_swap_size_notifications) {
+   needs_swap_size_notifications_ = needs_swap_size_notifications;
diff --git a/devel/electron12/files/patch-components_viz_service_display__embedder_software__output__surface.h b/devel/electron12/files/patch-components_viz_service_display__embedder_software__output__surface.h
new file mode 100644
index 0000000000000000000000000000000000000000..b83b5c106a915dd2bc82f319195e7e67b4e02af2
--- /dev/null
+++ b/devel/electron12/files/patch-components_viz_service_display__embedder_software__output__surface.h
@@ -0,0 +1,20 @@
+--- components/viz/service/display_embedder/software_output_surface.h.orig	2021-04-14 01:08:47 UTC
++++ components/viz/service/display_embedder/software_output_surface.h
+@@ -51,7 +51,7 @@ class VIZ_SERVICE_EXPORT SoftwareOutputSurface : publi
+   gfx::OverlayTransform GetDisplayTransform() override;
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   void SetNeedsSwapSizeNotifications(
+       bool needs_swap_size_notifications) override;
+ #endif
+@@ -73,7 +73,7 @@ class VIZ_SERVICE_EXPORT SoftwareOutputSurface : publi
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   bool needs_swap_size_notifications_ = false;
+ #endif
+ 
diff --git a/devel/electron12/files/patch-components_viz_service_frame__sinks_root__compositor__frame__sink__impl.cc b/devel/electron12/files/patch-components_viz_service_frame__sinks_root__compositor__frame__sink__impl.cc
new file mode 100644
index 0000000000000000000000000000000000000000..78d1bcefca6b6dd3ea03e49da3ad9be44c93112b
--- /dev/null
+++ b/devel/electron12/files/patch-components_viz_service_frame__sinks_root__compositor__frame__sink__impl.cc
@@ -0,0 +1,20 @@
+--- components/viz/service/frame_sinks/root_compositor_frame_sink_impl.cc.orig	2021-04-22 07:51:51 UTC
++++ components/viz/service/frame_sinks/root_compositor_frame_sink_impl.cc
+@@ -60,7 +60,7 @@ RootCompositorFrameSinkImpl::Create(
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   // For X11, we need notify client about swap completion after resizing, so the
+   // client can use it for synchronize with X11 WM.
+   output_surface->SetNeedsSwapSizeNotifications(true);
+@@ -467,7 +467,7 @@ void RootCompositorFrameSinkImpl::DisplayDidCompleteSw
+     display_client_->DidCompleteSwapWithSize(pixel_size);
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   if (display_client_ && pixel_size != last_swap_pixel_size_) {
+     last_swap_pixel_size_ = pixel_size;
+     display_client_->DidCompleteSwapWithNewSize(last_swap_pixel_size_);
diff --git a/devel/electron12/files/patch-components_viz_service_frame__sinks_root__compositor__frame__sink__impl.h b/devel/electron12/files/patch-components_viz_service_frame__sinks_root__compositor__frame__sink__impl.h
new file mode 100644
index 0000000000000000000000000000000000000000..e43c2a685b1ccb20b8fb8d9a1d77735bc312fc20
--- /dev/null
+++ b/devel/electron12/files/patch-components_viz_service_frame__sinks_root__compositor__frame__sink__impl.h
@@ -0,0 +1,11 @@
+--- components/viz/service/frame_sinks/root_compositor_frame_sink_impl.h.orig	2021-04-14 01:08:47 UTC
++++ components/viz/service/frame_sinks/root_compositor_frame_sink_impl.h
+@@ -165,7 +165,7 @@ class RootCompositorFrameSinkImpl : public mojom::Comp
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   gfx::Size last_swap_pixel_size_;
+ #endif
+ 
diff --git a/devel/electron12/files/patch-components_viz_test_fake__output__surface.cc b/devel/electron12/files/patch-components_viz_test_fake__output__surface.cc
new file mode 100644
index 0000000000000000000000000000000000000000..c37e9a38fb185aad3c4eb0638290d4a2465d3e25
--- /dev/null
+++ b/devel/electron12/files/patch-components_viz_test_fake__output__surface.cc
@@ -0,0 +1,11 @@
+--- components/viz/test/fake_output_surface.cc.orig	2021-04-14 01:08:47 UTC
++++ components/viz/test/fake_output_surface.cc
+@@ -118,7 +118,7 @@ gfx::OverlayTransform FakeOutputSurface::GetDisplayTra
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ void FakeOutputSurface::SetNeedsSwapSizeNotifications(
+     bool needs_swap_size_notifications) {}
+ #endif
diff --git a/devel/electron12/files/patch-components_viz_test_fake__output__surface.h b/devel/electron12/files/patch-components_viz_test_fake__output__surface.h
new file mode 100644
index 0000000000000000000000000000000000000000..7ae3726b5262e18fb4f24211cafa5033032ff67a
--- /dev/null
+++ b/devel/electron12/files/patch-components_viz_test_fake__output__surface.h
@@ -0,0 +1,11 @@
+--- components/viz/test/fake_output_surface.h.orig	2021-04-14 01:08:47 UTC
++++ components/viz/test/fake_output_surface.h
+@@ -89,7 +89,7 @@ class FakeOutputSurface : public OutputSurface {
+   gfx::OverlayTransform GetDisplayTransform() override;
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   void SetNeedsSwapSizeNotifications(
+       bool needs_swap_size_notifications) override;
+ #endif
diff --git a/devel/electron12/files/patch-components_viz_test_mock__display__client.h b/devel/electron12/files/patch-components_viz_test_mock__display__client.h
new file mode 100644
index 0000000000000000000000000000000000000000..e515bb7c36fccb77ac1a000759fdc255c203ac9d
--- /dev/null
+++ b/devel/electron12/files/patch-components_viz_test_mock__display__client.h
@@ -0,0 +1,11 @@
+--- components/viz/test/mock_display_client.h.orig	2021-04-14 01:08:47 UTC
++++ components/viz/test/mock_display_client.h
+@@ -39,7 +39,7 @@ class MockDisplayClient : public mojom::DisplayClient 
+ #endif
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   MOCK_METHOD1(DidCompleteSwapWithNewSize, void(const gfx::Size&));
+ #endif
+ 
diff --git a/devel/electron11/files/patch-components_webcrypto_algorithms_test__helpers.cc b/devel/electron12/files/patch-components_webcrypto_algorithms_test__helpers.cc
similarity index 100%
rename from devel/electron11/files/patch-components_webcrypto_algorithms_test__helpers.cc
rename to devel/electron12/files/patch-components_webcrypto_algorithms_test__helpers.cc
diff --git a/devel/electron11/files/patch-content_app_content__main.cc b/devel/electron12/files/patch-content_app_content__main.cc
similarity index 78%
rename from devel/electron11/files/patch-content_app_content__main.cc
rename to devel/electron12/files/patch-content_app_content__main.cc
index 40a0a9fc013bece6b22fe780f62eca865cc496dc..24cac2b5ac76c33c58f43b68a67b2cd201dd323d 100644
--- a/devel/electron11/files/patch-content_app_content__main.cc
+++ b/devel/electron12/files/patch-content_app_content__main.cc
@@ -1,6 +1,6 @@
---- content/app/content_main.cc.orig	2021-01-07 00:36:32 UTC
+--- content/app/content_main.cc.orig	2021-04-14 01:08:47 UTC
 +++ content/app/content_main.cc
-@@ -230,7 +230,7 @@ int RunContentProcess(const ContentMainParams& params,
+@@ -229,7 +229,7 @@ int RunContentProcess(const ContentMainParams& params,
  #endif
      base::EnableTerminationOnOutOfMemory();
  
diff --git a/devel/electron11/files/patch-content_app_content__main__runner__impl.cc b/devel/electron12/files/patch-content_app_content__main__runner__impl.cc
similarity index 80%
rename from devel/electron11/files/patch-content_app_content__main__runner__impl.cc
rename to devel/electron12/files/patch-content_app_content__main__runner__impl.cc
index e67d4b1958a0ff211c7ca5df5a8f6a57f665dee5..c6ed04a23386190d2080781db6059437c71cd1ab 100644
--- a/devel/electron11/files/patch-content_app_content__main__runner__impl.cc
+++ b/devel/electron12/files/patch-content_app_content__main__runner__impl.cc
@@ -1,6 +1,6 @@
---- content/app/content_main_runner_impl.cc.orig	2021-01-25 11:27:00 UTC
+--- content/app/content_main_runner_impl.cc.orig	2021-04-22 07:51:51 UTC
 +++ content/app/content_main_runner_impl.cc
-@@ -131,7 +131,7 @@
+@@ -135,7 +135,7 @@
  
  #endif  // OS_POSIX || OS_FUCHSIA
  
@@ -9,7 +9,7 @@
  #include "base/native_library.h"
  #include "base/rand_util.h"
  #include "content/public/common/zygote/sandbox_support_linux.h"
-@@ -151,7 +151,7 @@
+@@ -155,7 +155,7 @@
  #include "content/public/common/content_client.h"
  #endif
  
@@ -18,7 +18,7 @@
  
  #if BUILDFLAG(USE_ZYGOTE_HANDLE)
  #include "content/browser/sandbox_host_linux.h"
-@@ -301,7 +301,7 @@ void InitializeZygoteSandboxForBrowserProcess(
+@@ -342,7 +342,7 @@ void InitializeZygoteSandboxForBrowserProcess(
  }
  #endif  // BUILDFLAG(USE_ZYGOTE_HANDLE)
  
@@ -27,7 +27,7 @@
  
  #if BUILDFLAG(ENABLE_PLUGINS)
  // Loads the (native) libraries but does not initialize them (i.e., does not
-@@ -392,7 +392,7 @@ void PreSandboxInit() {
+@@ -433,7 +433,7 @@ void PreSandboxInit() {
  }
  #endif  // BUILDFLAG(USE_ZYGOTE_HANDLE)
  
@@ -36,7 +36,7 @@
  
  }  // namespace
  
-@@ -455,7 +455,7 @@ int RunZygote(ContentMainDelegate* delegate) {
+@@ -496,7 +496,7 @@ int RunZygote(ContentMainDelegate* delegate) {
    delegate->ZygoteStarting(&zygote_fork_delegates);
    media::InitializeMediaLibrary();
  
@@ -45,8 +45,8 @@
    PreSandboxInit();
  #endif
  
-@@ -830,7 +830,7 @@ int ContentMainRunnerImpl::Run(bool start_service_mana
-       delegate_->PostFieldTrialInitialization();
+@@ -900,7 +900,7 @@ int ContentMainRunnerImpl::Run(bool start_minimal_brow
+       mojo::core::InitFeatures();
      }
  
 -#if defined(OS_LINUX) || defined(OS_CHROMEOS)
@@ -54,7 +54,7 @@
      // If dynamic Mojo Core is being used, ensure that it's loaded very early in
      // the child/zygote process, before any sandbox is initialized. The library
      // is not fully initialized with IPC support until a ChildProcess is later
-@@ -840,7 +840,7 @@ int ContentMainRunnerImpl::Run(bool start_service_mana
+@@ -910,7 +910,7 @@ int ContentMainRunnerImpl::Run(bool start_minimal_brow
        CHECK_EQ(mojo::LoadCoreLibrary(GetMojoCoreSharedLibraryPath()),
                 MOJO_RESULT_OK);
      }
diff --git a/devel/electron11/files/patch-content_browser_BUILD.gn b/devel/electron12/files/patch-content_browser_BUILD.gn
similarity index 72%
rename from devel/electron11/files/patch-content_browser_BUILD.gn
rename to devel/electron12/files/patch-content_browser_BUILD.gn
index 616e2e2b33d8b999735313ecc1ca878ffb4f8810..61877de8067fe1496c5ee530cbfbe90147b74411 100644
--- a/devel/electron11/files/patch-content_browser_BUILD.gn
+++ b/devel/electron12/files/patch-content_browser_BUILD.gn
@@ -1,6 +1,6 @@
---- content/browser/BUILD.gn.orig	2021-01-07 00:36:32 UTC
+--- content/browser/BUILD.gn.orig	2021-04-14 01:08:47 UTC
 +++ content/browser/BUILD.gn
-@@ -2113,6 +2113,15 @@ source_set("browser") {
+@@ -2153,6 +2153,15 @@ source_set("browser") {
      deps += [ "//third_party/speech-dispatcher" ]
    }
  
@@ -14,5 +14,5 @@
 +  }
 +
    # ChromeOS also defines linux but their memory-monitors conflict.
-   if (is_chromeos) {
+   if (is_chromeos_ash) {
      sources += [
diff --git a/devel/electron11/files/patch-content_browser_browser__main__loop.cc b/devel/electron12/files/patch-content_browser_browser__main__loop.cc
similarity index 73%
rename from devel/electron11/files/patch-content_browser_browser__main__loop.cc
rename to devel/electron12/files/patch-content_browser_browser__main__loop.cc
index 95febacafa3e4d99e254821eeb6bfcdb16255c93..cc986a4cf33d90ece85002a016dbb5941cec842c 100644
--- a/devel/electron11/files/patch-content_browser_browser__main__loop.cc
+++ b/devel/electron12/files/patch-content_browser_browser__main__loop.cc
@@ -1,15 +1,15 @@
---- content/browser/browser_main_loop.cc.orig	2021-01-25 11:27:00 UTC
+--- content/browser/browser_main_loop.cc.orig	2021-04-22 07:51:50 UTC
 +++ content/browser/browser_main_loop.cc
-@@ -367,7 +367,7 @@ std::unique_ptr<base::MemoryPressureMonitor> CreateMem
+@@ -368,7 +368,7 @@ std::unique_ptr<base::MemoryPressureMonitor> CreateMem
    if (chromeos::switches::MemoryPressureHandlingEnabled())
      monitor = std::make_unique<util::MultiSourceMemoryPressureMonitor>();
  #elif defined(OS_MAC) || defined(OS_WIN) || defined(OS_FUCHSIA) || \
--    (defined(OS_LINUX) && !defined(OS_CHROMEOS) && !BUILDFLAG(IS_CHROMECAST))
-+    (defined(OS_LINUX) && !defined(OS_CHROMEOS) && !BUILDFLAG(IS_CHROMECAST)) || defined(OS_BSD)
+-    ((defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) &&       \
++    defined(OS_BSD) || ((defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) && \
+      !BUILDFLAG(IS_CHROMECAST))
    monitor = std::make_unique<util::MultiSourceMemoryPressureMonitor>();
  #endif
-   // No memory monitor on other platforms...
-@@ -611,7 +611,7 @@ int BrowserMainLoop::EarlyInitialization() {
+@@ -566,7 +566,7 @@ int BrowserMainLoop::EarlyInitialization() {
  
    // Up the priority of the UI thread unless it was already high (since Mac
    // and recent versions of Android (O+) do this automatically).
@@ -18,7 +18,7 @@
    if (base::FeatureList::IsEnabled(
            features::kBrowserUseDisplayThreadPriority) &&
        base::PlatformThread::GetCurrentThreadPriority() <
-@@ -621,7 +621,7 @@ int BrowserMainLoop::EarlyInitialization() {
+@@ -576,7 +576,7 @@ int BrowserMainLoop::EarlyInitialization() {
    }
  #endif  // !defined(OS_MAC)
  
@@ -27,7 +27,7 @@
      defined(OS_ANDROID)
    // We use quite a few file descriptors for our IPC as well as disk the disk
    // cache,and the default limit on the Mac is low (256), so bump it up.
-@@ -631,7 +631,7 @@ int BrowserMainLoop::EarlyInitialization() {
+@@ -586,7 +586,7 @@ int BrowserMainLoop::EarlyInitialization() {
    // users can easily hit this limit with many open tabs. Bump up the limit to
    // an arbitrarily high number. See https://crbug.com/539567
    base::IncreaseFdLimitTo(8192);
diff --git a/devel/electron11/files/patch-content_browser_child__process__launcher__helper__linux.cc b/devel/electron12/files/patch-content_browser_child__process__launcher__helper__linux.cc
similarity index 100%
rename from devel/electron11/files/patch-content_browser_child__process__launcher__helper__linux.cc
rename to devel/electron12/files/patch-content_browser_child__process__launcher__helper__linux.cc
diff --git a/devel/electron12/files/patch-content_browser_compositor_viz__process__transport__factory.cc b/devel/electron12/files/patch-content_browser_compositor_viz__process__transport__factory.cc
new file mode 100644
index 0000000000000000000000000000000000000000..f080145ce1d143fa15d4ff865b7d48d184ceac26
--- /dev/null
+++ b/devel/electron12/files/patch-content_browser_compositor_viz__process__transport__factory.cc
@@ -0,0 +1,11 @@
+--- content/browser/compositor/viz_process_transport_factory.cc.orig	2021-04-22 07:51:51 UTC
++++ content/browser/compositor/viz_process_transport_factory.cc
+@@ -111,7 +111,7 @@ class HostDisplayClient : public viz::HostDisplayClien
+   // viz::HostDisplayClient:
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   void DidCompleteSwapWithNewSize(const gfx::Size& size) override {
+     compositor_->OnCompleteSwapWithNewSize(size);
+   }
diff --git a/devel/electron12/files/patch-content_browser_devtools_protocol_system__info__handler.cc b/devel/electron12/files/patch-content_browser_devtools_protocol_system__info__handler.cc
new file mode 100644
index 0000000000000000000000000000000000000000..6a61518453ffbe19a6b0c3f832a63967bc624fd7
--- /dev/null
+++ b/devel/electron12/files/patch-content_browser_devtools_protocol_system__info__handler.cc
@@ -0,0 +1,13 @@
+--- content/browser/devtools/protocol/system_info_handler.cc.orig	2021-04-14 01:08:48 UTC
++++ content/browser/devtools/protocol/system_info_handler.cc
+@@ -49,8 +49,8 @@ std::unique_ptr<SystemInfo::Size> GfxSizeToSystemInfoS
+ // Linux and Mac Debug builds need more time -- see Issue 796437, 1046598, and
+ // 1153667.
+ // Windows builds need more time -- see Issue 873112 and 1004472.
+-#if ((defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)) && \
+-     !defined(NDEBUG)) ||                                              \
++#if ((defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)) && \
++     !defined(NDEBUG)) ||                                                                 \
+     defined(OS_WIN)
+ const int kGPUInfoWatchdogTimeoutMs = 30000;
+ #else
diff --git a/devel/electron12/files/patch-content_browser_download_download__manager__impl.cc b/devel/electron12/files/patch-content_browser_download_download__manager__impl.cc
new file mode 100644
index 0000000000000000000000000000000000000000..eb03d7713ef0540388a187211639c7c17bea462f
--- /dev/null
+++ b/devel/electron12/files/patch-content_browser_download_download__manager__impl.cc
@@ -0,0 +1,29 @@
+--- content/browser/download/download_manager_impl.cc.orig	2021-04-14 01:08:48 UTC
++++ content/browser/download/download_manager_impl.cc
+@@ -83,7 +83,7 @@
+ #include "third_party/blink/public/common/loader/referrer_utils.h"
+ #include "third_party/blink/public/common/loader/throttling_url_loader.h"
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "base/nix/xdg_util.h"
+ #endif
+ 
+@@ -219,7 +219,7 @@ class DownloadItemFactoryImpl : public download::Downl
+   }
+ };
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ base::FilePath GetTemporaryDownloadDirectory() {
+   std::unique_ptr<base::Environment> env(base::Environment::Create());
+   return base::nix::GetXDGDirectory(env.get(), "XDG_DATA_HOME", ".local/share");
+@@ -560,7 +560,7 @@ bool DownloadManagerImpl::InterceptDownload(
+ 
+ base::FilePath DownloadManagerImpl::GetDefaultDownloadDirectory() {
+   base::FilePath default_download_directory;
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   // TODO(thomasanderson,crbug.com/784010): Remove this when all Linux
+   // distros with versions of GTK lower than 3.14.7 are no longer
+   // supported.  This should happen when support for Ubuntu Trusty and
diff --git a/devel/electron11/files/patch-content_browser_font__access_font__enumeration__cache.h b/devel/electron12/files/patch-content_browser_font__access_font__enumeration__cache.h
similarity index 92%
rename from devel/electron11/files/patch-content_browser_font__access_font__enumeration__cache.h
rename to devel/electron12/files/patch-content_browser_font__access_font__enumeration__cache.h
index 8982653bfa55bc46d51b1aec966c10f72fe32689..b1f5d9fef06c29888851ce10dbb449f74d477694 100644
--- a/devel/electron11/files/patch-content_browser_font__access_font__enumeration__cache.h
+++ b/devel/electron12/files/patch-content_browser_font__access_font__enumeration__cache.h
@@ -1,6 +1,6 @@
---- content/browser/font_access/font_enumeration_cache.h.orig	2021-01-07 00:36:33 UTC
+--- content/browser/font_access/font_enumeration_cache.h.orig	2021-04-14 01:08:48 UTC
 +++ content/browser/font_access/font_enumeration_cache.h
-@@ -15,7 +15,7 @@
+@@ -16,7 +16,7 @@
  #include "third_party/blink/public/common/font_access/font_enumeration_table.pb.h"
  #include "third_party/blink/public/mojom/font_access/font_access.mojom.h"
  
diff --git a/devel/electron12/files/patch-content_browser_gpu_compositor__util.cc b/devel/electron12/files/patch-content_browser_gpu_compositor__util.cc
new file mode 100644
index 0000000000000000000000000000000000000000..61cf5968eb5b116da2563a04cfc74c32ed650b25
--- /dev/null
+++ b/devel/electron12/files/patch-content_browser_gpu_compositor__util.cc
@@ -0,0 +1,16 @@
+--- content/browser/gpu/compositor_util.cc.orig	2021-04-14 01:08:48 UTC
++++ content/browser/gpu/compositor_util.cc
+@@ -127,11 +127,11 @@ const GpuFeatureData GetGpuFeatureData(
+     {"video_decode",
+      SafeGetFeatureStatus(gpu_feature_info,
+                           gpu::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_DECODE),
+-#if (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) && !defined(OS_ANDROID)
++#if (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)) && !defined(OS_ANDROID)
+      !base::FeatureList::IsEnabled(media::kVaapiVideoDecodeLinux),
+ #else
+      command_line.HasSwitch(switches::kDisableAcceleratedVideoDecode),
+-#endif  // ((defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) &&
++#endif  // ((defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)) &&
+         // !defined(OS_ANDROID)
+      DisableInfo::Problem(
+          "Accelerated video decode has been disabled, either via blocklist, "
diff --git a/devel/electron12/files/patch-content_browser_gpu_gpu__process__host.cc b/devel/electron12/files/patch-content_browser_gpu_gpu__process__host.cc
new file mode 100644
index 0000000000000000000000000000000000000000..41f161e8d1657f67a6ed6c0bb1994ebfcd3bfec7
--- /dev/null
+++ b/devel/electron12/files/patch-content_browser_gpu_gpu__process__host.cc
@@ -0,0 +1,22 @@
+--- content/browser/gpu/gpu_process_host.cc.orig	2021-04-22 07:51:50 UTC
++++ content/browser/gpu/gpu_process_host.cc
+@@ -231,8 +231,8 @@ static const char* const kSwitchNames[] = {
+     sandbox::policy::switches::kNoSandbox,
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_ASH) && \
+-    !BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_BSD) || (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_ASH) && \
++    !BUILDFLAG(IS_CHROMEOS_LACROS))
+     switches::kDisableDevShmUsage,
+ #endif
+ #if defined(OS_WIN)
+@@ -1144,7 +1144,7 @@ bool GpuProcessHost::LaunchGpuProcess() {
+   std::unique_ptr<base::CommandLine> cmd_line =
+       std::make_unique<base::CommandLine>(base::CommandLine::NO_PROGRAM);
+ #else
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   int child_flags = gpu_launcher.empty() ? ChildProcessHost::CHILD_ALLOW_SELF
+                                          : ChildProcessHost::CHILD_NORMAL;
+ #elif defined(OS_MAC)
diff --git a/devel/electron11/files/patch-content_browser_memory_swap__metrics__driver__impl__linux.cc b/devel/electron12/files/patch-content_browser_memory_swap__metrics__driver__impl__linux.cc
similarity index 100%
rename from devel/electron11/files/patch-content_browser_memory_swap__metrics__driver__impl__linux.cc
rename to devel/electron12/files/patch-content_browser_memory_swap__metrics__driver__impl__linux.cc
diff --git a/devel/electron11/files/patch-content_browser_ppapi__plugin__process__host.cc b/devel/electron12/files/patch-content_browser_ppapi__plugin__process__host.cc
similarity index 73%
rename from devel/electron11/files/patch-content_browser_ppapi__plugin__process__host.cc
rename to devel/electron12/files/patch-content_browser_ppapi__plugin__process__host.cc
index 78a36c97ba9687992c98ca6b69df21245c250e44..9b1287b4c93a0ed2f35a7ac8a5ee3643943e1358 100644
--- a/devel/electron11/files/patch-content_browser_ppapi__plugin__process__host.cc
+++ b/devel/electron12/files/patch-content_browser_ppapi__plugin__process__host.cc
@@ -1,6 +1,6 @@
---- content/browser/ppapi_plugin_process_host.cc.orig	2021-01-25 11:27:00 UTC
+--- content/browser/ppapi_plugin_process_host.cc.orig	2021-04-22 07:51:50 UTC
 +++ content/browser/ppapi_plugin_process_host.cc
-@@ -367,7 +367,7 @@ bool PpapiPluginProcessHost::Init(const PepperPluginIn
+@@ -306,7 +306,7 @@ bool PpapiPluginProcessHost::Init(const PepperPluginIn
    base::CommandLine::StringType plugin_launcher =
        browser_command_line.GetSwitchValueNative(switches::kPpapiPluginLauncher);
  
@@ -8,4 +8,4 @@
 +#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    int flags = plugin_launcher.empty() ? ChildProcessHost::CHILD_ALLOW_SELF :
                                          ChildProcessHost::CHILD_NORMAL;
- #elif defined(OS_MAC)
+ #else
diff --git a/devel/electron11/files/patch-content_browser_ppapi__plugin__process__host__receiver__bindings.cc b/devel/electron12/files/patch-content_browser_ppapi__plugin__process__host__receiver__bindings.cc
similarity index 100%
rename from devel/electron11/files/patch-content_browser_ppapi__plugin__process__host__receiver__bindings.cc
rename to devel/electron12/files/patch-content_browser_ppapi__plugin__process__host__receiver__bindings.cc
diff --git a/devel/electron11/files/patch-content_browser_renderer__host_delegated__frame__host.cc b/devel/electron12/files/patch-content_browser_renderer__host_delegated__frame__host.cc
similarity index 64%
rename from devel/electron11/files/patch-content_browser_renderer__host_delegated__frame__host.cc
rename to devel/electron12/files/patch-content_browser_renderer__host_delegated__frame__host.cc
index ceab878b426aac2296f214f5bd9aa1aa9c670552..1f7bd7301c4e63e928709112b671726275ccee9e 100644
--- a/devel/electron11/files/patch-content_browser_renderer__host_delegated__frame__host.cc
+++ b/devel/electron12/files/patch-content_browser_renderer__host_delegated__frame__host.cc
@@ -1,11 +1,11 @@
---- content/browser/renderer_host/delegated_frame_host.cc.orig	2021-01-07 00:36:33 UTC
+--- content/browser/renderer_host/delegated_frame_host.cc.orig	2021-04-14 01:08:48 UTC
 +++ content/browser/renderer_host/delegated_frame_host.cc
-@@ -243,7 +243,7 @@ void DelegatedFrameHost::EmbedSurface(
+@@ -258,7 +258,7 @@ void DelegatedFrameHost::EmbedSurface(
  
    if (!primary_surface_id ||
        primary_surface_id->local_surface_id() != local_surface_id_) {
--#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+-#if defined(OS_WIN) || defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_WIN) || defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
      // On Windows and Linux, we would like to produce new content as soon as
      // possible or the OS will create an additional black gutter. Until we can
      // block resize on surface synchronization on these platforms, we will not
diff --git a/devel/electron11/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc b/devel/electron12/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc
similarity index 100%
rename from devel/electron11/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc
rename to devel/electron12/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc
diff --git a/devel/electron11/files/patch-content_browser_renderer__host_pepper_pepper__file__io__host.cc b/devel/electron12/files/patch-content_browser_renderer__host_pepper_pepper__file__io__host.cc
similarity index 85%
rename from devel/electron11/files/patch-content_browser_renderer__host_pepper_pepper__file__io__host.cc
rename to devel/electron12/files/patch-content_browser_renderer__host_pepper_pepper__file__io__host.cc
index 17d381f4a8104ede3d003a9d52f4702ed0a3d36e..3ce4343a3fe3e5ea9c0376e0159497288dc23488 100644
--- a/devel/electron11/files/patch-content_browser_renderer__host_pepper_pepper__file__io__host.cc
+++ b/devel/electron12/files/patch-content_browser_renderer__host_pepper_pepper__file__io__host.cc
@@ -1,6 +1,6 @@
---- content/browser/renderer_host/pepper/pepper_file_io_host.cc.orig	2021-01-07 00:36:33 UTC
+--- content/browser/renderer_host/pepper/pepper_file_io_host.cc.orig	2021-04-14 01:08:48 UTC
 +++ content/browser/renderer_host/pepper/pepper_file_io_host.cc
-@@ -438,7 +438,7 @@ void PepperFileIOHost::OnLocalFileOpened(
+@@ -437,7 +437,7 @@ void PepperFileIOHost::OnLocalFileOpened(
      ppapi::host::ReplyMessageContext reply_context,
      const base::FilePath& path,
      base::File::Error error_code) {
@@ -9,7 +9,7 @@
    // Quarantining a file before its contents are available is only supported on
    // Windows and Linux.
    if (!FileOpenForWrite(open_flags_) || error_code != base::File::FILE_OK) {
-@@ -459,7 +459,7 @@ void PepperFileIOHost::OnLocalFileOpened(
+@@ -458,7 +458,7 @@ void PepperFileIOHost::OnLocalFileOpened(
  #endif
  }
  
diff --git a/devel/electron11/files/patch-content_browser_renderer__host_render__message__filter.cc b/devel/electron12/files/patch-content_browser_renderer__host_render__message__filter.cc
similarity index 79%
rename from devel/electron11/files/patch-content_browser_renderer__host_render__message__filter.cc
rename to devel/electron12/files/patch-content_browser_renderer__host_render__message__filter.cc
index 891eefd3ea47adc5bae9a8e45613d6a267173819..0501c85743e1eec98f7800394a23c6a6d4863348 100644
--- a/devel/electron11/files/patch-content_browser_renderer__host_render__message__filter.cc
+++ b/devel/electron12/files/patch-content_browser_renderer__host_render__message__filter.cc
@@ -1,6 +1,6 @@
---- content/browser/renderer_host/render_message_filter.cc.orig	2021-01-07 00:36:33 UTC
+--- content/browser/renderer_host/render_message_filter.cc.orig	2021-04-14 01:08:48 UTC
 +++ content/browser/renderer_host/render_message_filter.cc
-@@ -70,7 +70,7 @@
+@@ -69,7 +69,7 @@
  #if defined(OS_MAC)
  #include "ui/accelerated_widget_mac/window_resize_helper_mac.h"
  #endif
@@ -9,8 +9,8 @@
  #include "base/linux_util.h"
  #include "base/threading/platform_thread.h"
  #endif
-@@ -117,7 +117,7 @@ void RenderMessageFilter::GenerateRoutingID(
-   std::move(callback).Run(render_widget_helper_->GetNextRoutingID());
+@@ -126,7 +126,7 @@ void RenderMessageFilter::GenerateFrameRoutingID(
+   std::move(callback).Run(routing_id, frame_token, devtools_frame_token);
  }
  
 -#if defined(OS_LINUX) || defined(OS_CHROMEOS)
@@ -18,7 +18,7 @@
  void RenderMessageFilter::SetThreadPriorityOnFileThread(
      base::PlatformThreadId ns_tid,
      base::ThreadPriority priority) {
-@@ -138,7 +138,7 @@ void RenderMessageFilter::SetThreadPriorityOnFileThrea
+@@ -147,7 +147,7 @@ void RenderMessageFilter::SetThreadPriorityOnFileThrea
  }
  #endif
  
diff --git a/devel/electron11/files/patch-content_browser_renderer__host_render__message__filter.h b/devel/electron12/files/patch-content_browser_renderer__host_render__message__filter.h
similarity index 83%
rename from devel/electron11/files/patch-content_browser_renderer__host_render__message__filter.h
rename to devel/electron12/files/patch-content_browser_renderer__host_render__message__filter.h
index e06f52271ec76f5712a6cfd7b1f35d02d1ccd403..c140bf8faae70d6d89c5017723c13390cfdf22a5 100644
--- a/devel/electron11/files/patch-content_browser_renderer__host_render__message__filter.h
+++ b/devel/electron12/files/patch-content_browser_renderer__host_render__message__filter.h
@@ -1,8 +1,8 @@
---- content/browser/renderer_host/render_message_filter.h.orig	2021-01-07 00:36:33 UTC
+--- content/browser/renderer_host/render_message_filter.h.orig	2021-04-14 01:08:48 UTC
 +++ content/browser/renderer_host/render_message_filter.h
-@@ -79,14 +79,14 @@ class CONTENT_EXPORT RenderMessageFilter
-   // mojom::RenderMessageFilter:
+@@ -80,14 +80,14 @@ class CONTENT_EXPORT RenderMessageFilter
    void GenerateRoutingID(GenerateRoutingIDCallback routing_id) override;
+   void GenerateFrameRoutingID(GenerateFrameRoutingIDCallback callback) override;
    void HasGpuProcess(HasGpuProcessCallback callback) override;
 -#if defined(OS_LINUX) || defined(OS_CHROMEOS)
 +#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
diff --git a/devel/electron11/files/patch-content_browser_renderer__host_render__process__host__impl.cc b/devel/electron12/files/patch-content_browser_renderer__host_render__process__host__impl.cc
similarity index 69%
rename from devel/electron11/files/patch-content_browser_renderer__host_render__process__host__impl.cc
rename to devel/electron12/files/patch-content_browser_renderer__host_render__process__host__impl.cc
index c0e3342fe60c2e348ba3dcbf4feab95dc4de1dd1..1c89b86ff49cd31ca2f26c391cfe341701ae0efb 100644
--- a/devel/electron11/files/patch-content_browser_renderer__host_render__process__host__impl.cc
+++ b/devel/electron12/files/patch-content_browser_renderer__host_render__process__host__impl.cc
@@ -1,6 +1,6 @@
---- content/browser/renderer_host/render_process_host_impl.cc.orig	2021-01-25 11:27:00 UTC
+--- content/browser/renderer_host/render_process_host_impl.cc.orig	2021-04-22 07:51:50 UTC
 +++ content/browser/renderer_host/render_process_host_impl.cc
-@@ -238,7 +238,7 @@
+@@ -230,7 +230,7 @@
  #include "third_party/blink/public/mojom/android_font_lookup/android_font_lookup.mojom.h"
  #endif
  
@@ -9,7 +9,7 @@
  #include <sys/resource.h>
  #include <sys/time.h>
  
-@@ -1240,7 +1240,7 @@ static constexpr size_t kUnknownPlatformProcessLimit =
+@@ -1217,7 +1217,7 @@ static constexpr size_t kUnknownPlatformProcessLimit =
  // to indicate failure and std::numeric_limits<size_t>::max() to indicate
  // unlimited.
  size_t GetPlatformProcessLimit() {
@@ -18,16 +18,16 @@
    struct rlimit limit;
    if (getrlimit(RLIMIT_NPROC, &limit) != 0)
      return kUnknownPlatformProcessLimit;
-@@ -1251,7 +1251,7 @@ size_t GetPlatformProcessLimit() {
+@@ -1228,7 +1228,7 @@ size_t GetPlatformProcessLimit() {
  #else
    // TODO(https://crbug.com/104689): Implement on other platforms.
    return kUnknownPlatformProcessLimit;
 -#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
 +#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  }
- #endif  // !defined(OS_ANDROID) && !defined(OS_CHROMEOS)
+ #endif  // !defined(OS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH)
  
-@@ -1336,7 +1336,7 @@ class RenderProcessHostImpl::IOThreadHostImpl : public
+@@ -1302,7 +1302,7 @@ class RenderProcessHostImpl::IOThreadHostImpl : public
          return;
      }
  
@@ -36,7 +36,7 @@
      if (auto font_receiver = receiver.As<font_service::mojom::FontService>()) {
        ConnectToFontService(std::move(font_receiver));
        return;
-@@ -1769,7 +1769,7 @@ bool RenderProcessHostImpl::Init() {
+@@ -1732,7 +1732,7 @@ bool RenderProcessHostImpl::Init() {
    renderer_prefix =
        browser_command_line.GetSwitchValueNative(switches::kRendererCmdPrefix);
  
@@ -45,12 +45,14 @@
    int flags = renderer_prefix.empty() ? ChildProcessHost::CHILD_ALLOW_SELF
                                        : ChildProcessHost::CHILD_NORMAL;
  #elif defined(OS_MAC)
-@@ -3322,7 +3322,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLin
- #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !BUILDFLAG(IS_LACROS)
+@@ -3181,8 +3181,8 @@ void RenderProcessHostImpl::PropagateBrowserCommandLin
+     switches::kDisableInProcessStackTraces,
+     sandbox::policy::switches::kDisableSeccompFilterSandbox,
+     sandbox::policy::switches::kNoSandbox,
+-#if defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_ASH) && \
+-    !BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_BSD) || (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_ASH) && \
++    !BUILDFLAG(IS_CHROMEOS_LACROS))
      switches::kDisableDevShmUsage,
  #endif
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID)) || defined(OS_BSD)
-     switches::kEnableAcceleratedVideoDecode,
- #endif
  #if defined(OS_MAC)
diff --git a/devel/electron11/files/patch-content_browser_renderer__host_render__view__host__impl.cc b/devel/electron12/files/patch-content_browser_renderer__host_render__view__host__impl.cc
similarity index 87%
rename from devel/electron11/files/patch-content_browser_renderer__host_render__view__host__impl.cc
rename to devel/electron12/files/patch-content_browser_renderer__host_render__view__host__impl.cc
index c1df87b44a10e03222cf4d68910739a586055c18..d9a201d7517dce75f3a6c4ccaa24d6fa00b4718d 100644
--- a/devel/electron11/files/patch-content_browser_renderer__host_render__view__host__impl.cc
+++ b/devel/electron12/files/patch-content_browser_renderer__host_render__view__host__impl.cc
@@ -1,6 +1,6 @@
---- content/browser/renderer_host/render_view_host_impl.cc.orig	2021-01-25 11:27:00 UTC
+--- content/browser/renderer_host/render_view_host_impl.cc.orig	2021-04-22 07:51:51 UTC
 +++ content/browser/renderer_host/render_view_host_impl.cc
-@@ -278,7 +278,7 @@ void RenderViewHostImpl::GetPlatformSpecificPrefs(
+@@ -258,7 +258,7 @@ void RenderViewHostImpl::GetPlatformSpecificPrefs(
        display::win::ScreenWin::GetSystemMetricsInDIP(SM_CYVSCROLL);
    prefs->arrow_bitmap_width_horizontal_scroll_bar_in_dips =
        display::win::ScreenWin::GetSystemMetricsInDIP(SM_CXHSCROLL);
diff --git a/devel/electron11/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc b/devel/electron12/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc
similarity index 52%
rename from devel/electron11/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc
rename to devel/electron12/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc
index e09af826bafc36835f9d5d9e12a89a140bf81cb0..7e0872028b5ce0e5b7f69d4fc78ab031f8895f09 100644
--- a/devel/electron11/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc
+++ b/devel/electron12/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc
@@ -1,43 +1,38 @@
---- content/browser/renderer_host/render_widget_host_view_aura.cc.orig	2021-01-25 11:26:59 UTC
+--- content/browser/renderer_host/render_widget_host_view_aura.cc.orig	2021-04-22 07:51:50 UTC
 +++ content/browser/renderer_host/render_widget_host_view_aura.cc
-@@ -111,11 +111,11 @@
+@@ -111,7 +111,7 @@
  #include "ui/gfx/gdi_util.h"
  #endif
  
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
  #include "content/browser/accessibility/browser_accessibility_auralinux.h"
- #endif
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
  #include "ui/base/ime/linux/text_edit_command_auralinux.h"
  #include "ui/base/ime/linux/text_edit_key_bindings_delegate_auralinux.h"
- #endif
-@@ -492,7 +492,7 @@ gfx::NativeViewAccessible RenderWidgetHostViewAura::Ge
+@@ -474,7 +474,7 @@ gfx::NativeViewAccessible RenderWidgetHostViewAura::Ge
    if (manager)
      return ToBrowserAccessibilityWin(manager->GetRoot())->GetCOM();
  
--#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
    BrowserAccessibilityManager* manager =
        host()->GetOrCreateRootBrowserAccessibilityManager();
    if (manager && manager->GetRoot())
-@@ -2224,7 +2224,7 @@ bool RenderWidgetHostViewAura::NeedsInputGrab() {
+@@ -2188,7 +2188,7 @@ bool RenderWidgetHostViewAura::NeedsInputGrab() {
  }
  
  bool RenderWidgetHostViewAura::NeedsMouseCapture() {
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
    return NeedsInputGrab();
  #else
    return false;
-@@ -2388,7 +2388,7 @@ void RenderWidgetHostViewAura::ForwardKeyboardEventWit
+@@ -2354,7 +2354,7 @@ void RenderWidgetHostViewAura::ForwardKeyboardEventWit
    if (!target_host)
      return;
  
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
    ui::TextEditKeyBindingsDelegateAuraLinux* keybinding_delegate =
        ui::GetTextEditKeyBindingsDelegate();
    std::vector<ui::TextEditCommandAuraLinux> commands;
diff --git a/devel/electron11/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc b/devel/electron12/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc
similarity index 84%
rename from devel/electron11/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc
rename to devel/electron12/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc
index 3066e4728c6468a23375477c5d13114c67cd102e..a639950872c75ae2cc719bd62dfc7d4bc56ae1f5 100644
--- a/devel/electron11/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc
+++ b/devel/electron12/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc
@@ -1,6 +1,6 @@
---- content/browser/renderer_host/render_widget_host_view_event_handler.cc.orig	2021-01-07 00:36:33 UTC
+--- content/browser/renderer_host/render_widget_host_view_event_handler.cc.orig	2021-04-14 01:08:48 UTC
 +++ content/browser/renderer_host/render_widget_host_view_event_handler.cc
-@@ -716,7 +716,7 @@ bool RenderWidgetHostViewEventHandler::CanRendererHand
+@@ -700,7 +700,7 @@ bool RenderWidgetHostViewEventHandler::CanRendererHand
    if (event->type() == ui::ET_MOUSE_EXITED) {
      if (mouse_locked || selection_popup)
        return false;
diff --git a/devel/electron11/files/patch-content_browser_scheduler_responsiveness_jank__monitor__impl.cc b/devel/electron12/files/patch-content_browser_scheduler_responsiveness_jank__monitor__impl.cc
similarity index 57%
rename from devel/electron11/files/patch-content_browser_scheduler_responsiveness_jank__monitor__impl.cc
rename to devel/electron12/files/patch-content_browser_scheduler_responsiveness_jank__monitor__impl.cc
index a5d4ac787cb5c291698278700d0dedb494d0ee21..eb301d95bb5ec9801e604d9b83bf0d30037e0ee6 100644
--- a/devel/electron11/files/patch-content_browser_scheduler_responsiveness_jank__monitor__impl.cc
+++ b/devel/electron12/files/patch-content_browser_scheduler_responsiveness_jank__monitor__impl.cc
@@ -1,11 +1,11 @@
---- content/browser/scheduler/responsiveness/jank_monitor_impl.cc.orig	2021-01-07 00:36:33 UTC
+--- content/browser/scheduler/responsiveness/jank_monitor_impl.cc.orig	2021-04-14 01:08:48 UTC
 +++ content/browser/scheduler/responsiveness/jank_monitor_impl.cc
-@@ -332,7 +332,7 @@ void JankMonitorImpl::ThreadExecutionState::DidRunTask
+@@ -333,7 +333,7 @@ void JankMonitorImpl::ThreadExecutionState::DidRunTask
      // in context menus, among others). Simply ignore the mismatches for now.
      // See https://crbug.com/929813 for the details of why the mismatch
      // happens.
--#if !defined(OS_CHROMEOS) && defined(OS_LINUX) && defined(USE_OZONE)
-+#if !defined(OS_CHROMEOS) && (defined(OS_LINUX) || defined(OS_BSD)) && defined(USE_OZONE)
+-#if (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) && defined(USE_OZONE)
++#if (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)) && defined(USE_OZONE)
      task_execution_metadata_.clear();
  #endif
      return;
diff --git a/devel/electron11/files/patch-content_browser_scheduler_responsiveness_native__event__observer.cc b/devel/electron12/files/patch-content_browser_scheduler_responsiveness_native__event__observer.cc
similarity index 100%
rename from devel/electron11/files/patch-content_browser_scheduler_responsiveness_native__event__observer.cc
rename to devel/electron12/files/patch-content_browser_scheduler_responsiveness_native__event__observer.cc
diff --git a/devel/electron11/files/patch-content_browser_scheduler_responsiveness_native__event__observer.h b/devel/electron12/files/patch-content_browser_scheduler_responsiveness_native__event__observer.h
similarity index 100%
rename from devel/electron11/files/patch-content_browser_scheduler_responsiveness_native__event__observer.h
rename to devel/electron12/files/patch-content_browser_scheduler_responsiveness_native__event__observer.h
diff --git a/devel/electron12/files/patch-content_browser_utility__process__host.cc b/devel/electron12/files/patch-content_browser_utility__process__host.cc
new file mode 100644
index 0000000000000000000000000000000000000000..05fc6f49f5b563910bb8e91f88a833c769934445
--- /dev/null
+++ b/devel/electron12/files/patch-content_browser_utility__process__host.cc
@@ -0,0 +1,22 @@
+--- content/browser/utility_process_host.cc.orig	2021-04-14 01:08:48 UTC
++++ content/browser/utility_process_host.cc
+@@ -58,7 +58,7 @@ UtilityProcessHost::UtilityProcessHost()
+ 
+ UtilityProcessHost::UtilityProcessHost(std::unique_ptr<Client> client)
+     : sandbox_type_(sandbox::policy::SandboxType::kUtility),
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+       child_flags_(ChildProcessHost::CHILD_ALLOW_SELF),
+ #else
+       child_flags_(ChildProcessHost::CHILD_NORMAL),
+@@ -227,8 +227,8 @@ bool UtilityProcessHost::StartProcess() {
+       sandbox::policy::switches::kNoSandbox,
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_ASH) && \
+-    !BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_BSD) || (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_ASH) && \
++    !BUILDFLAG(IS_CHROMEOS_LACROS))
+       switches::kDisableDevShmUsage,
+ #endif
+ #if defined(OS_MAC)
diff --git a/devel/electron11/files/patch-content_browser_utility__process__host__receiver__bindings.cc b/devel/electron12/files/patch-content_browser_utility__process__host__receiver__bindings.cc
similarity index 100%
rename from devel/electron11/files/patch-content_browser_utility__process__host__receiver__bindings.cc
rename to devel/electron12/files/patch-content_browser_utility__process__host__receiver__bindings.cc
diff --git a/devel/electron11/files/patch-content_browser_v8__snapshot__files.cc b/devel/electron12/files/patch-content_browser_v8__snapshot__files.cc
similarity index 100%
rename from devel/electron11/files/patch-content_browser_v8__snapshot__files.cc
rename to devel/electron12/files/patch-content_browser_v8__snapshot__files.cc
diff --git a/devel/electron12/files/patch-content_browser_web__contents_web__contents__view__aura.cc b/devel/electron12/files/patch-content_browser_web__contents_web__contents__view__aura.cc
new file mode 100644
index 0000000000000000000000000000000000000000..0ff1b1cf735841e74f93c86b13354cd2917c7759
--- /dev/null
+++ b/devel/electron12/files/patch-content_browser_web__contents_web__contents__view__aura.cc
@@ -0,0 +1,29 @@
+--- content/browser/web_contents/web_contents_view_aura.cc.orig	2021-04-22 07:51:50 UTC
++++ content/browser/web_contents/web_contents_view_aura.cc
+@@ -157,7 +157,7 @@ class WebDragSourceAura : public NotificationObserver 
+   DISALLOW_COPY_AND_ASSIGN(WebDragSourceAura);
+ };
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN) || defined(OS_BSD)
+ // Fill out the OSExchangeData with a file contents, synthesizing a name if
+ // necessary.
+ void PrepareDragForFileContents(const DropData& drop_data,
+@@ -243,7 +243,7 @@ void PrepareDragData(const DropData& drop_data,
+   if (!drop_data.download_metadata.empty())
+     PrepareDragForDownload(drop_data, provider, web_contents);
+ #endif
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN) || defined(OS_BSD)
+   // We set the file contents before the URL because the URL also sets file
+   // contents (to a .URL shortcut).  We want to prefer file content data over
+   // a shortcut so we add it first.
+@@ -1211,7 +1211,7 @@ void WebContentsViewAura::OnMouseEvent(ui::MouseEvent*
+     // Linux window managers like to handle raise-on-click themselves.  If we
+     // raise-on-click manually, this may override user settings that prevent
+     // focus-stealing.
+-#if !defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if !defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_BSD)
+     // It is possible for the web-contents to be destroyed while it is being
+     // activated. Use a weak-ptr to track whether that happened or not.
+     // More in https://crbug.com/1040725
diff --git a/devel/electron11/files/patch-content_browser_zygote__host_zygote__host__impl__linux.cc b/devel/electron12/files/patch-content_browser_zygote__host_zygote__host__impl__linux.cc
similarity index 100%
rename from devel/electron11/files/patch-content_browser_zygote__host_zygote__host__impl__linux.cc
rename to devel/electron12/files/patch-content_browser_zygote__host_zygote__host__impl__linux.cc
diff --git a/devel/electron11/files/patch-content_browser_zygote__host_zygote__host__impl__linux.h b/devel/electron12/files/patch-content_browser_zygote__host_zygote__host__impl__linux.h
similarity index 100%
rename from devel/electron11/files/patch-content_browser_zygote__host_zygote__host__impl__linux.h
rename to devel/electron12/files/patch-content_browser_zygote__host_zygote__host__impl__linux.h
diff --git a/devel/electron11/files/patch-content_child_child__process.cc b/devel/electron12/files/patch-content_child_child__process.cc
similarity index 66%
rename from devel/electron11/files/patch-content_child_child__process.cc
rename to devel/electron12/files/patch-content_child_child__process.cc
index b17d5f38768a0ba65223032d17fbc4be80f31531..4653a2066d49e5336aefc62b992a7c914833782f 100644
--- a/devel/electron11/files/patch-content_child_child__process.cc
+++ b/devel/electron12/files/patch-content_child_child__process.cc
@@ -1,6 +1,6 @@
---- content/child/child_process.cc.orig	2021-01-07 00:36:33 UTC
+--- content/child/child_process.cc.orig	2021-04-14 01:08:48 UTC
 +++ content/child/child_process.cc
-@@ -50,7 +50,7 @@ ChildProcess::ChildProcess(base::ThreadPriority io_thr
+@@ -52,7 +52,7 @@ ChildProcess::ChildProcess(base::ThreadPriority io_thr
    DCHECK(!g_lazy_child_process_tls.Pointer()->Get());
    g_lazy_child_process_tls.Pointer()->Set(this);
  
@@ -8,4 +8,4 @@
 +#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    const base::CommandLine& command_line =
        *base::CommandLine::ForCurrentProcess();
-   if (IsMojoCoreSharedLibraryEnabled()) {
+   const bool is_embedded_in_browser_process =
diff --git a/devel/electron12/files/patch-content_common_BUILD.gn b/devel/electron12/files/patch-content_common_BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..81ee7abf689a632801b46c6eb72f263983075908
--- /dev/null
+++ b/devel/electron12/files/patch-content_common_BUILD.gn
@@ -0,0 +1,36 @@
+--- content/common/BUILD.gn.orig	2021-04-14 01:08:48 UTC
++++ content/common/BUILD.gn
+@@ -340,7 +340,7 @@ source_set("common") {
+     sources -= [ "cursors/webcursor_aura.cc" ]
+   }
+ 
+-  if (is_linux || is_chromeos) {
++  if ((is_linux || is_chromeos) && !is_bsd) {
+     sources += [
+       "common_sandbox_support_linux.cc",
+       "sandbox_init_linux.cc",
+@@ -356,6 +356,15 @@ source_set("common") {
+     ]
+   }
+ 
++  if (is_bsd) {
++    sources += [
++      "common_sandbox_support_linux.cc",
++    ]
++    deps += [
++      "//third_party/fontconfig",
++    ]
++  }
++
+   if (use_zygote_handle) {
+     sources += [
+       "zygote/zygote_handle_impl_linux.h",
+@@ -409,7 +418,7 @@ source_set("common") {
+   }
+ }
+ 
+-if (is_linux || is_chromeos) {
++if ((is_linux || is_chromeos) && !is_bsd) {
+   source_set("set_process_title_linux") {
+     public = [ "set_process_title_linux.h" ]
+     sources = [ "set_process_title_linux.cc" ]
diff --git a/devel/electron11/files/patch-content_common_common__sandbox__support__linux.cc b/devel/electron12/files/patch-content_common_common__sandbox__support__linux.cc
similarity index 100%
rename from devel/electron11/files/patch-content_common_common__sandbox__support__linux.cc
rename to devel/electron12/files/patch-content_common_common__sandbox__support__linux.cc
diff --git a/devel/electron11/files/patch-content_common_mojo__core__library__support.cc b/devel/electron12/files/patch-content_common_mojo__core__library__support.cc
similarity index 100%
rename from devel/electron11/files/patch-content_common_mojo__core__library__support.cc
rename to devel/electron12/files/patch-content_common_mojo__core__library__support.cc
diff --git a/devel/electron11/files/patch-content_common_user__agent.cc b/devel/electron12/files/patch-content_common_user__agent.cc
similarity index 66%
rename from devel/electron11/files/patch-content_common_user__agent.cc
rename to devel/electron12/files/patch-content_common_user__agent.cc
index d081caa14adb8ff624891bc91d4ad2ca51cf7126..0697b11dab03f609e7c7db687e518b8c9763c73f 100644
--- a/devel/electron11/files/patch-content_common_user__agent.cc
+++ b/devel/electron12/files/patch-content_common_user__agent.cc
@@ -1,6 +1,6 @@
---- content/common/user_agent.cc.orig	2021-01-07 00:36:33 UTC
+--- content/common/user_agent.cc.orig	2021-04-14 01:08:48 UTC
 +++ content/common/user_agent.cc
-@@ -214,6 +214,14 @@ std::string BuildOSCpuInfoFromOSVersionAndCpuType(cons
+@@ -213,6 +213,14 @@ std::string BuildOSCpuInfoFromOSVersionAndCpuType(cons
    );
  #endif
  
diff --git a/devel/electron11/files/patch-content_gpu_BUILD.gn b/devel/electron12/files/patch-content_gpu_BUILD.gn
similarity index 51%
rename from devel/electron11/files/patch-content_gpu_BUILD.gn
rename to devel/electron12/files/patch-content_gpu_BUILD.gn
index d6773e93e9ab251f98d6e16af467b186d6011e26..c79a3590d3be383ad615be56c8980c7eedec8285 100644
--- a/devel/electron11/files/patch-content_gpu_BUILD.gn
+++ b/devel/electron12/files/patch-content_gpu_BUILD.gn
@@ -1,9 +1,9 @@
---- content/gpu/BUILD.gn.orig	2021-01-07 00:36:33 UTC
+--- content/gpu/BUILD.gn.orig	2021-04-14 01:08:48 UTC
 +++ content/gpu/BUILD.gn
-@@ -130,7 +130,7 @@ target(link_target_type, "gpu_sources") {
- 
+@@ -137,7 +137,7 @@ target(link_target_type, "gpu_sources") {
    # Use DRI on desktop Linux builds.
-   if (current_cpu != "s390x" && current_cpu != "ppc64" && is_desktop_linux &&
+   if (current_cpu != "s390x" && current_cpu != "ppc64" &&
+       (is_linux || is_chromeos_lacros) &&
 -      (!is_chromecast || is_cast_desktop_build)) {
 +      (!is_chromecast || is_cast_desktop_build) && !is_bsd) {
      configs += [ "//build/config/linux/dri" ]
diff --git a/devel/electron11/files/patch-content_gpu_gpu__main.cc b/devel/electron12/files/patch-content_gpu_gpu__main.cc
similarity index 75%
rename from devel/electron11/files/patch-content_gpu_gpu__main.cc
rename to devel/electron12/files/patch-content_gpu_gpu__main.cc
index af5411cf99776fe150a04af9f8509e4b9ff379bb..4b0b56c31a5b546d0df1cc2c1ff13dea745329ea 100644
--- a/devel/electron11/files/patch-content_gpu_gpu__main.cc
+++ b/devel/electron12/files/patch-content_gpu_gpu__main.cc
@@ -1,7 +1,7 @@
---- content/gpu/gpu_main.cc.orig	2021-01-25 11:27:00 UTC
+--- content/gpu/gpu_main.cc.orig	2021-04-22 07:51:50 UTC
 +++ content/gpu/gpu_main.cc
-@@ -86,7 +86,7 @@
- #include "ui/gfx/x/x11_types.h"                          // nogncheck
+@@ -85,7 +85,7 @@
+ #include "ui/gfx/x/x11_switches.h"                       // nogncheck
  #endif
  
 -#if defined(OS_LINUX) || defined(OS_CHROMEOS)
@@ -9,7 +9,7 @@
  #include "content/gpu/gpu_sandbox_hook_linux.h"
  #include "content/public/common/sandbox_init.h"
  #include "sandbox/policy/linux/sandbox_linux.h"
-@@ -306,7 +306,7 @@ int GpuMain(const MainFunctionParams& parameters) {
+@@ -310,7 +310,7 @@ int GpuMain(const MainFunctionParams& parameters) {
                gpu_preferences.message_pump_type);
      }
  #endif
diff --git a/devel/electron11/files/patch-content_gpu_gpu__sandbox__hook__linux.cc b/devel/electron12/files/patch-content_gpu_gpu__sandbox__hook__linux.cc
similarity index 68%
rename from devel/electron11/files/patch-content_gpu_gpu__sandbox__hook__linux.cc
rename to devel/electron12/files/patch-content_gpu_gpu__sandbox__hook__linux.cc
index 04810f32a891dfa01ab1dd294d930c4182888fa7..bb87001c6ff8695ee68efb5cb636bdb14e8c1e11 100644
--- a/devel/electron11/files/patch-content_gpu_gpu__sandbox__hook__linux.cc
+++ b/devel/electron12/files/patch-content_gpu_gpu__sandbox__hook__linux.cc
@@ -1,6 +1,6 @@
---- content/gpu/gpu_sandbox_hook_linux.cc.orig	2021-01-07 00:36:33 UTC
+--- content/gpu/gpu_sandbox_hook_linux.cc.orig	2021-04-14 01:08:48 UTC
 +++ content/gpu/gpu_sandbox_hook_linux.cc
-@@ -361,6 +361,7 @@ std::vector<BrokerFilePermission> FilePermissionsForGp
+@@ -362,6 +362,7 @@ std::vector<BrokerFilePermission> FilePermissionsForGp
  }
  
  void LoadArmGpuLibraries() {
@@ -8,7 +8,7 @@
    // Preload the Mali library.
    if (UseChromecastSandboxAllowlist()) {
      for (const char* path : kAllowedChromecastPaths) {
-@@ -375,6 +376,7 @@ void LoadArmGpuLibraries() {
+@@ -376,6 +377,7 @@ void LoadArmGpuLibraries() {
      // Preload the Tegra V4L2 (video decode acceleration) library.
      dlopen(kLibTegraPath, dlopen_flag);
    }
diff --git a/devel/electron11/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc b/devel/electron12/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc
similarity index 100%
rename from devel/electron11/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc
rename to devel/electron12/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc
diff --git a/devel/electron11/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h b/devel/electron12/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h
similarity index 100%
rename from devel/electron11/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h
rename to devel/electron12/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h
diff --git a/devel/electron11/files/patch-content_public_app_content__main__delegate.cc b/devel/electron12/files/patch-content_public_app_content__main__delegate.cc
similarity index 100%
rename from devel/electron11/files/patch-content_public_app_content__main__delegate.cc
rename to devel/electron12/files/patch-content_public_app_content__main__delegate.cc
diff --git a/devel/electron11/files/patch-content_public_app_content__main__delegate.h b/devel/electron12/files/patch-content_public_app_content__main__delegate.h
similarity index 100%
rename from devel/electron11/files/patch-content_public_app_content__main__delegate.h
rename to devel/electron12/files/patch-content_public_app_content__main__delegate.h
diff --git a/devel/electron12/files/patch-content_public_browser_font__access__context.h b/devel/electron12/files/patch-content_public_browser_font__access__context.h
new file mode 100644
index 0000000000000000000000000000000000000000..73f2354d74330d09e9bac9bd62bd3768dae16cde
--- /dev/null
+++ b/devel/electron12/files/patch-content_public_browser_font__access__context.h
@@ -0,0 +1,11 @@
+--- content/public/browser/font_access_context.h.orig	2021-04-14 01:08:48 UTC
++++ content/public/browser/font_access_context.h
+@@ -10,7 +10,7 @@
+ #include "content/common/content_export.h"
+ #include "third_party/blink/public/mojom/font_access/font_access.mojom.h"
+ 
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) || \
+     defined(OS_MAC)
+ #define PLATFORM_HAS_LOCAL_FONT_ENUMERATION_IMPL 1
+ #endif
diff --git a/devel/electron11/files/patch-content_public_browser_zygote__host_zygote__host__linux.h b/devel/electron12/files/patch-content_public_browser_zygote__host_zygote__host__linux.h
similarity index 100%
rename from devel/electron11/files/patch-content_public_browser_zygote__host_zygote__host__linux.h
rename to devel/electron12/files/patch-content_public_browser_zygote__host_zygote__host__linux.h
diff --git a/devel/electron11/files/patch-content_public_common_child__process__host.h b/devel/electron12/files/patch-content_public_common_child__process__host.h
similarity index 100%
rename from devel/electron11/files/patch-content_public_common_child__process__host.h
rename to devel/electron12/files/patch-content_public_common_child__process__host.h
diff --git a/devel/electron11/files/patch-content_public_common_common__param__traits__macros.h b/devel/electron12/files/patch-content_public_common_common__param__traits__macros.h
similarity index 73%
rename from devel/electron11/files/patch-content_public_common_common__param__traits__macros.h
rename to devel/electron12/files/patch-content_public_common_common__param__traits__macros.h
index 33ea392164a6ecd7ea0e295edbb2fa7120e98697..b7dae429c1c5b865915d73f42b0be911c9a07ffa 100644
--- a/devel/electron11/files/patch-content_public_common_common__param__traits__macros.h
+++ b/devel/electron12/files/patch-content_public_common_common__param__traits__macros.h
@@ -1,11 +1,11 @@
---- content/public/common/common_param_traits_macros.h.orig	2021-01-07 00:36:33 UTC
+--- content/public/common/common_param_traits_macros.h.orig	2021-04-14 01:08:48 UTC
 +++ content/public/common/common_param_traits_macros.h
-@@ -138,7 +138,7 @@ IPC_STRUCT_TRAITS_BEGIN(blink::mojom::RendererPreferen
+@@ -129,7 +129,7 @@ IPC_STRUCT_TRAITS_BEGIN(blink::RendererPreferences)
    IPC_STRUCT_TRAITS_MEMBER(accept_languages)
    IPC_STRUCT_TRAITS_MEMBER(plugin_fullscreen_allowed)
    IPC_STRUCT_TRAITS_MEMBER(caret_browsing_enabled)
 -#if defined(OS_LINUX) || defined(OS_CHROMEOS)
 +#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    IPC_STRUCT_TRAITS_MEMBER(system_font_family_name)
-   IPC_STRUCT_TRAITS_MEMBER(selection_clipboard_buffer_available)
  #endif
+ #if defined(OS_WIN)
diff --git a/devel/electron11/files/patch-content_public_common_content__constants.cc b/devel/electron12/files/patch-content_public_common_content__constants.cc
similarity index 68%
rename from devel/electron11/files/patch-content_public_common_content__constants.cc
rename to devel/electron12/files/patch-content_public_common_content__constants.cc
index 0d6323f5fd9309ea731b67eb9971cccdf3c7be2b..d580c4ebe7c30711917792da2e096a2849f2bb75 100644
--- a/devel/electron11/files/patch-content_public_common_content__constants.cc
+++ b/devel/electron12/files/patch-content_public_common_content__constants.cc
@@ -1,6 +1,6 @@
---- content/public/common/content_constants.cc.orig	2021-01-07 00:36:33 UTC
+--- content/public/common/content_constants.cc.orig	2021-04-14 01:08:48 UTC
 +++ content/public/common/content_constants.cc
-@@ -56,7 +56,7 @@ std::string GetCorsExemptRequestedWithHeaderName() {
+@@ -50,7 +50,7 @@ std::string GetCorsExemptRequestedWithHeaderName() {
    return base::JoinString(pieces, "-");
  }
  
diff --git a/devel/electron11/files/patch-content_public_common_content__constants.h b/devel/electron12/files/patch-content_public_common_content__constants.h
similarity index 75%
rename from devel/electron11/files/patch-content_public_common_content__constants.h
rename to devel/electron12/files/patch-content_public_common_content__constants.h
index 79ac64323981cfd71b281cc7d01edbc2d574dc1e..8f9813f3522e656e1e81e3a28cbcb0f1821a3add 100644
--- a/devel/electron11/files/patch-content_public_common_content__constants.h
+++ b/devel/electron12/files/patch-content_public_common_content__constants.h
@@ -1,6 +1,6 @@
---- content/public/common/content_constants.h.orig	2021-01-07 00:36:33 UTC
+--- content/public/common/content_constants.h.orig	2021-04-14 01:08:48 UTC
 +++ content/public/common/content_constants.h
-@@ -70,7 +70,7 @@ CONTENT_EXPORT extern const char kCorsExemptPurposeHea
+@@ -64,7 +64,7 @@ CONTENT_EXPORT extern const char kCorsExemptPurposeHea
  // it at run time.
  CONTENT_EXPORT std::string GetCorsExemptRequestedWithHeaderName();
  
diff --git a/devel/electron11/files/patch-content_public_common_content__features.cc b/devel/electron12/files/patch-content_public_common_content__features.cc
similarity index 52%
rename from devel/electron11/files/patch-content_public_common_content__features.cc
rename to devel/electron12/files/patch-content_public_common_content__features.cc
index 4b7da492cee1ecb0cb953f15aa025b612276e11a..b52ffc44d6dbc34e264f7d1adeacbb2720c284a7 100644
--- a/devel/electron11/files/patch-content_public_common_content__features.cc
+++ b/devel/electron12/files/patch-content_public_common_content__features.cc
@@ -1,15 +1,15 @@
---- content/public/common/content_features.cc.orig	2021-01-07 00:36:33 UTC
+--- content/public/common/content_features.cc.orig	2021-04-14 01:08:48 UTC
 +++ content/public/common/content_features.cc
-@@ -54,7 +54,7 @@ const base::Feature kAudioServiceLaunchOnStartup{
- const base::Feature kAudioServiceOutOfProcess {
-   "AudioServiceOutOfProcess",
+@@ -45,7 +45,7 @@ const base::Feature kAudioServiceOutOfProcess {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
  #if defined(OS_WIN) || defined(OS_MAC) || \
--    (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+-    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
        base::FEATURE_ENABLED_BY_DEFAULT
  #else
        base::FEATURE_DISABLED_BY_DEFAULT
-@@ -781,8 +781,8 @@ const base::Feature kWebAssemblyThreads {
+@@ -773,8 +773,8 @@ const base::Feature kWebAssemblyThreads {
  };
  
  // Enable WebAssembly trap handler.
@@ -20,12 +20,12 @@
      defined(ARCH_CPU_X86_64)
  const base::Feature kWebAssemblyTrapHandler{"WebAssemblyTrapHandler",
                                              base::FEATURE_ENABLED_BY_DEFAULT};
-@@ -812,7 +812,7 @@ const base::Feature kWebAuth{"WebAuthentication",
- // https://w3c.github.io/webauthn
- const base::Feature kWebAuthCable {
+@@ -795,7 +795,7 @@ const base::Feature kWebAuthCable {
    "WebAuthenticationCable",
--#if !defined(OS_CHROMEOS) && defined(OS_LINUX)
-+#if (!defined(OS_CHROMEOS) && defined(OS_LINUX)) || defined(OS_BSD)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_LINUX)
++#if BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_LINUX) || defined(OS_BSD)
        base::FEATURE_DISABLED_BY_DEFAULT
  #else
        base::FEATURE_ENABLED_BY_DEFAULT
diff --git a/devel/electron12/files/patch-content_public_common_content__switches.cc b/devel/electron12/files/patch-content_public_common_content__switches.cc
new file mode 100644
index 0000000000000000000000000000000000000000..5079655127f263960b8d353ea9dd4f2d136e2ad7
--- /dev/null
+++ b/devel/electron12/files/patch-content_public_common_content__switches.cc
@@ -0,0 +1,11 @@
+--- content/public/common/content_switches.cc.orig	2021-04-14 01:08:48 UTC
++++ content/public/common/content_switches.cc
+@@ -955,7 +955,7 @@ const char kEnableAutomation[] = "enable-automation";
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // Allows sending text-to-speech requests to speech-dispatcher, a common
+ // Linux speech service. Because it's buggy, the user must explicitly
+ // enable it so that visiting a random webpage can't cause instability.
diff --git a/devel/electron12/files/patch-content_public_common_content__switches.h b/devel/electron12/files/patch-content_public_common_content__switches.h
new file mode 100644
index 0000000000000000000000000000000000000000..9aef4c0f2799b773759e6bebede59f69b62b284e
--- /dev/null
+++ b/devel/electron12/files/patch-content_public_common_content__switches.h
@@ -0,0 +1,20 @@
+--- content/public/common/content_switches.h.orig	2021-04-14 01:08:48 UTC
++++ content/public/common/content_switches.h
+@@ -245,7 +245,7 @@ CONTENT_EXPORT extern const char kWebXrRuntimeOrientat
+ CONTENT_EXPORT extern const char kWebXrRuntimeOpenXr[];
+ CONTENT_EXPORT extern const char kWebXrRuntimeWMR[];
+ 
+-#if (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) && !defined(OS_ANDROID)
++#if (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)) && !defined(OS_ANDROID)
+ CONTENT_EXPORT extern const char kEnableAcceleratedVideoDecode[];
+ #endif
+ CONTENT_EXPORT extern const char kDisableAcceleratedVideoDecode[];
+@@ -268,7 +268,7 @@ CONTENT_EXPORT extern const char kRendererWaitForJavaD
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ CONTENT_EXPORT extern const char kEnableSpeechDispatcher[];
+ #endif
+ 
diff --git a/devel/electron11/files/patch-content_public_common_use__zoom__for__dsf__policy.cc b/devel/electron12/files/patch-content_public_common_use__zoom__for__dsf__policy.cc
similarity index 100%
rename from devel/electron11/files/patch-content_public_common_use__zoom__for__dsf__policy.cc
rename to devel/electron12/files/patch-content_public_common_use__zoom__for__dsf__policy.cc
diff --git a/devel/electron11/files/patch-content_public_common_zygote_features.gni b/devel/electron12/files/patch-content_public_common_zygote_features.gni
similarity index 100%
rename from devel/electron11/files/patch-content_public_common_zygote_features.gni
rename to devel/electron12/files/patch-content_public_common_zygote_features.gni
diff --git a/devel/electron11/files/patch-content_public_test_browser__test__base.cc b/devel/electron12/files/patch-content_public_test_browser__test__base.cc
similarity index 72%
rename from devel/electron11/files/patch-content_public_test_browser__test__base.cc
rename to devel/electron12/files/patch-content_public_test_browser__test__base.cc
index 00d74c3f86ce0067caff7822f505b4c4defdca5f..cf21d36a7298eb392e44333f54a64cc3a6198884 100644
--- a/devel/electron11/files/patch-content_public_test_browser__test__base.cc
+++ b/devel/electron12/files/patch-content_public_test_browser__test__base.cc
@@ -1,6 +1,6 @@
---- content/public/test/browser_test_base.cc.orig	2021-01-07 00:36:33 UTC
+--- content/public/test/browser_test_base.cc.orig	2021-04-14 01:08:48 UTC
 +++ content/public/test/browser_test_base.cc
-@@ -105,6 +105,10 @@
+@@ -109,6 +109,10 @@
  #include "ui/views/test/event_generator_delegate_mac.h"
  #endif
  
diff --git a/devel/electron12/files/patch-content_public_test_content__browser__test.cc b/devel/electron12/files/patch-content_public_test_content__browser__test.cc
new file mode 100644
index 0000000000000000000000000000000000000000..78d85baea271ff0b4dc55c1010ebf5383b2cb7d7
--- /dev/null
+++ b/devel/electron12/files/patch-content_public_test_content__browser__test.cc
@@ -0,0 +1,29 @@
+--- content/public/test/content_browser_test.cc.orig	2021-04-14 01:08:48 UTC
++++ content/public/test/content_browser_test.cc
+@@ -29,7 +29,7 @@
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_LINUX)
++#if BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/base/ime/init/input_method_initializer.h"
+ #endif
+ 
+@@ -92,7 +92,7 @@ void ContentBrowserTest::SetUp() {
+   // LinuxInputMethodContextFactory has to be initialized.
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_LINUX)
++#if BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_LINUX) || defined(OS_BSD)
+   ui::InitializeInputMethodForTesting();
+ #endif
+ 
+@@ -107,7 +107,7 @@ void ContentBrowserTest::TearDown() {
+   // LinuxInputMethodContextFactory has to be shutdown.
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_LINUX)
++#if BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_LINUX) || defined(OS_BSD)
+   ui::ShutdownInputMethodForTesting();
+ #endif
+ }
diff --git a/devel/electron11/files/patch-content_public_test_mock__render__thread.cc b/devel/electron12/files/patch-content_public_test_mock__render__thread.cc
similarity index 71%
rename from devel/electron11/files/patch-content_public_test_mock__render__thread.cc
rename to devel/electron12/files/patch-content_public_test_mock__render__thread.cc
index d41e0623f4ea12e2780cf8f49a09ed2a76b6b820..788e02467eeda5805d24db47fb2a26338c5f5c80 100644
--- a/devel/electron11/files/patch-content_public_test_mock__render__thread.cc
+++ b/devel/electron12/files/patch-content_public_test_mock__render__thread.cc
@@ -1,6 +1,6 @@
---- content/public/test/mock_render_thread.cc.orig	2021-01-07 00:36:33 UTC
+--- content/public/test/mock_render_thread.cc.orig	2021-04-14 01:08:48 UTC
 +++ content/public/test/mock_render_thread.cc
-@@ -52,7 +52,7 @@ class MockRenderMessageFilterImpl : public mojom::Rend
+@@ -60,7 +60,7 @@ class MockRenderMessageFilterImpl : public mojom::Rend
      std::move(callback).Run(false);
    }
  
diff --git a/devel/electron11/files/patch-content_renderer_render__process__impl.cc b/devel/electron12/files/patch-content_renderer_render__process__impl.cc
similarity index 85%
rename from devel/electron11/files/patch-content_renderer_render__process__impl.cc
rename to devel/electron12/files/patch-content_renderer_render__process__impl.cc
index 848169819d021aa9da5a2f6cc1c4398f6f38e42d..479cad5171f39e6d083f7806c398ca1866fceaa6 100644
--- a/devel/electron11/files/patch-content_renderer_render__process__impl.cc
+++ b/devel/electron12/files/patch-content_renderer_render__process__impl.cc
@@ -1,6 +1,6 @@
---- content/renderer/render_process_impl.cc.orig	2021-01-07 00:36:33 UTC
+--- content/renderer/render_process_impl.cc.orig	2021-04-14 01:08:48 UTC
 +++ content/renderer/render_process_impl.cc
-@@ -44,7 +44,7 @@
+@@ -45,7 +45,7 @@
  #if defined(OS_WIN)
  #include "base/win/win_util.h"
  #endif
@@ -9,7 +9,7 @@
  #include "v8/include/v8-wasm-trap-handler-posix.h"
  #endif
  namespace {
-@@ -177,7 +177,7 @@ RenderProcessImpl::RenderProcessImpl()
+@@ -186,7 +186,7 @@ RenderProcessImpl::RenderProcessImpl()
  
    SetV8FlagIfNotFeature(features::kWebAssemblyTrapHandler,
                          "--no-wasm-trap-handler");
diff --git a/devel/electron12/files/patch-content_renderer_render__thread__impl.cc b/devel/electron12/files/patch-content_renderer_render__thread__impl.cc
new file mode 100644
index 0000000000000000000000000000000000000000..06e9ae1f9d04e2132b9b9c4d133f626fe3b633e0
--- /dev/null
+++ b/devel/electron12/files/patch-content_renderer_render__thread__impl.cc
@@ -0,0 +1,52 @@
+--- content/renderer/render_thread_impl.cc.orig	2021-04-22 07:51:50 UTC
++++ content/renderer/render_thread_impl.cc
+@@ -174,7 +174,7 @@
+ 
+ #if defined(OS_MAC)
+ #include <malloc/malloc.h>
+-#else
++#elif !defined(OS_BSD)
+ #include <malloc.h>
+ #endif
+ 
+@@ -687,7 +687,7 @@ void RenderThreadImpl::Init() {
+   DCHECK(parsed_num_raster_threads) << string_value;
+   DCHECK_GT(num_raster_threads, 0);
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   categorized_worker_pool_->SetBackgroundingCallback(
+       main_thread_scheduler_->DefaultTaskRunner(),
+       base::BindOnce(
+@@ -710,7 +710,7 @@ void RenderThreadImpl::Init() {
+   base::DiscardableMemoryAllocator::SetInstance(
+       discardable_memory_allocator_.get());
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   if (base::FeatureList::IsEnabled(
+           blink::features::kBlinkCompositorUseDisplayThreadPriority)) {
+     render_message_filter()->SetThreadPriority(
+@@ -1079,11 +1079,11 @@ media::GpuVideoAcceleratorFactories* RenderThreadImpl:
+   const bool enable_video_accelerator =
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+       base::FeatureList::IsEnabled(media::kVaapiVideoDecodeLinux) &&
+ #else
+       !cmd_line->HasSwitch(switches::kDisableAcceleratedVideoDecode) &&
+-#endif  // defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#endif  // defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+       (gpu_channel_host->gpu_feature_info()
+            .status_values[gpu::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_DECODE] ==
+        gpu::kGpuFeatureStatusEnabled);
+@@ -1093,7 +1093,7 @@ media::GpuVideoAcceleratorFactories* RenderThreadImpl:
+       !cmd_line->HasSwitch(switches::kDisableGpuMemoryBufferVideoFrames);
+ #else
+       cmd_line->HasSwitch(switches::kEnableGpuMemoryBufferVideoFrames);
+-#endif  // defined(OS_MAC) || defined(OS_LINUX) || defined(OS_CHROMEOS) ||
++#endif  // defined(OS_MAC) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+         // defined(OS_WIN)
+   const bool enable_media_stream_gpu_memory_buffers =
+       enable_gpu_memory_buffers &&
diff --git a/devel/electron11/files/patch-content_renderer_renderer__blink__platform__impl.cc b/devel/electron12/files/patch-content_renderer_renderer__blink__platform__impl.cc
similarity index 81%
rename from devel/electron11/files/patch-content_renderer_renderer__blink__platform__impl.cc
rename to devel/electron12/files/patch-content_renderer_renderer__blink__platform__impl.cc
index d19166aa52b398da826435103131ee7a559ea8d7..ab597389d7aa8221700ebff561479e0a475b2cb1 100644
--- a/devel/electron11/files/patch-content_renderer_renderer__blink__platform__impl.cc
+++ b/devel/electron12/files/patch-content_renderer_renderer__blink__platform__impl.cc
@@ -1,6 +1,6 @@
---- content/renderer/renderer_blink_platform_impl.cc.orig	2021-01-25 11:27:00 UTC
+--- content/renderer/renderer_blink_platform_impl.cc.orig	2021-04-22 07:51:51 UTC
 +++ content/renderer/renderer_blink_platform_impl.cc
-@@ -97,7 +97,7 @@
+@@ -102,7 +102,7 @@
  
  #if defined(OS_MAC)
  #include "content/child/child_process_sandbox_support_impl_mac.h"
@@ -9,7 +9,7 @@
  #include "content/child/child_process_sandbox_support_impl_linux.h"
  #endif
  
-@@ -169,7 +169,7 @@ RendererBlinkPlatformImpl::RendererBlinkPlatformImpl(
+@@ -172,7 +172,7 @@ RendererBlinkPlatformImpl::RendererBlinkPlatformImpl(
        main_thread_scheduler_(main_thread_scheduler) {
    // RenderThread may not exist in some tests.
    if (RenderThreadImpl::current()) {
@@ -18,7 +18,7 @@
      mojo::PendingRemote<font_service::mojom::FontService> font_service;
      RenderThreadImpl::current()->BindHostReceiver(
          font_service.InitWithNewPipeAndPassReceiver());
-@@ -179,7 +179,7 @@ RendererBlinkPlatformImpl::RendererBlinkPlatformImpl(
+@@ -182,7 +182,7 @@ RendererBlinkPlatformImpl::RendererBlinkPlatformImpl(
  #endif
    }
  
@@ -27,16 +27,16 @@
    if (sandboxEnabled()) {
  #if defined(OS_MAC)
      sandbox_support_ = std::make_unique<WebSandboxSupportMac>();
-@@ -232,7 +232,7 @@ RendererBlinkPlatformImpl::WrapSharedURLLoaderFactory(
+@@ -233,7 +233,7 @@ RendererBlinkPlatformImpl::WrapSharedURLLoaderFactory(
+       std::move(factory));
+ }
  
- void RendererBlinkPlatformImpl::SetDisplayThreadPriority(
-     base::PlatformThreadId thread_id) {
 -#if defined(OS_LINUX) || defined(OS_CHROMEOS)
 +#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ void RendererBlinkPlatformImpl::SetDisplayThreadPriority(
+     base::PlatformThreadId thread_id) {
    if (RenderThreadImpl* render_thread = RenderThreadImpl::current()) {
-     render_thread->render_message_filter()->SetThreadPriority(
-         thread_id, base::ThreadPriority::DISPLAY);
-@@ -245,7 +245,7 @@ blink::BlameContext* RendererBlinkPlatformImpl::GetTop
+@@ -248,7 +248,7 @@ blink::BlameContext* RendererBlinkPlatformImpl::GetTop
  }
  
  blink::WebSandboxSupport* RendererBlinkPlatformImpl::GetSandboxSupport() {
diff --git a/devel/electron11/files/patch-content_renderer_renderer__blink__platform__impl.h b/devel/electron12/files/patch-content_renderer_renderer__blink__platform__impl.h
similarity index 60%
rename from devel/electron11/files/patch-content_renderer_renderer__blink__platform__impl.h
rename to devel/electron12/files/patch-content_renderer_renderer__blink__platform__impl.h
index dbffcb8a774fc73b5a0bf2c2121529e45ab5df9f..0f7faa87f95f60843366a481be042837306fce70 100644
--- a/devel/electron11/files/patch-content_renderer_renderer__blink__platform__impl.h
+++ b/devel/electron12/files/patch-content_renderer_renderer__blink__platform__impl.h
@@ -1,4 +1,4 @@
---- content/renderer/renderer_blink_platform_impl.h.orig	2021-01-25 11:27:00 UTC
+--- content/renderer/renderer_blink_platform_impl.h.orig	2021-04-22 07:51:51 UTC
 +++ content/renderer/renderer_blink_platform_impl.h
 @@ -29,7 +29,7 @@
  #include "third_party/blink/public/mojom/cache_storage/cache_storage.mojom.h"
@@ -9,7 +9,16 @@
  #include "components/services/font/public/cpp/font_loader.h"  // nogncheck
  #include "third_party/skia/include/core/SkRefCnt.h"           // nogncheck
  #endif
-@@ -224,7 +224,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : publi
+@@ -183,7 +183,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : publi
+       const blink::WebURL& top_document_web_url) override;
+   gpu::GpuMemoryBufferManager* GetGpuMemoryBufferManager() override;
+   blink::WebString ConvertIDNToUnicode(const blink::WebString& host) override;
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   void SetDisplayThreadPriority(base::PlatformThreadId thread_id) override;
+ #endif
+   blink::BlameContext* GetTopLevelBlameContext() override;
+@@ -231,7 +231,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : publi
    // Return the mojo interface for making CodeCache calls.
    blink::mojom::CodeCacheHost& GetCodeCacheHost();
  
@@ -18,7 +27,7 @@
    std::unique_ptr<blink::WebSandboxSupport> sandbox_support_;
  #endif
  
-@@ -245,7 +245,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : publi
+@@ -252,7 +252,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : publi
    mojo::PendingRemote<blink::mojom::CodeCacheHost> code_cache_host_remote_;
    mojo::SharedRemote<blink::mojom::CodeCacheHost> code_cache_host_;
  
diff --git a/devel/electron11/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc b/devel/electron12/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc
similarity index 100%
rename from devel/electron11/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc
rename to devel/electron12/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc
diff --git a/devel/electron11/files/patch-content_shell_BUILD.gn b/devel/electron12/files/patch-content_shell_BUILD.gn
similarity index 78%
rename from devel/electron11/files/patch-content_shell_BUILD.gn
rename to devel/electron12/files/patch-content_shell_BUILD.gn
index 1e2d209d947f07124ddbfde5d7b27462db278a51..794bfc597ba3afc063bdc24f5d071086ec7a4017 100644
--- a/devel/electron11/files/patch-content_shell_BUILD.gn
+++ b/devel/electron12/files/patch-content_shell_BUILD.gn
@@ -1,6 +1,6 @@
---- content/shell/BUILD.gn.orig	2021-01-07 00:36:33 UTC
+--- content/shell/BUILD.gn.orig	2021-04-14 01:08:48 UTC
 +++ content/shell/BUILD.gn
-@@ -94,7 +94,7 @@ static_library("content_shell_app") {
+@@ -87,7 +87,7 @@ static_library("content_shell_app") {
        "//content/web_test:web_test_renderer",
      ]
    }
@@ -9,7 +9,7 @@
      deps += [
        "//components/crash/core/app",
        "//components/crash/core/app:test_support",
-@@ -253,7 +253,7 @@ static_library("content_shell_lib") {
+@@ -267,7 +267,7 @@ static_library("content_shell_lib") {
  
    if (is_fuchsia) {
      deps += [ "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.ui.policy" ]
@@ -18,7 +18,7 @@
      deps += [
        "//components/crash/content/browser",
        "//components/crash/core/app",
-@@ -505,7 +505,7 @@ if (is_android) {
+@@ -521,7 +521,7 @@ if (is_android) {
        }
      }
  
@@ -27,7 +27,7 @@
        data_deps +=
            [ "//third_party/crashpad/crashpad/handler:crashpad_handler" ]
      }
-@@ -789,7 +789,7 @@ group("content_shell_crash_test") {
+@@ -805,7 +805,7 @@ group("content_shell_crash_test") {
        mac_bin_path + "otool",
      ]
    }
@@ -36,7 +36,7 @@
      data += [
        "//components/crash/content/tools/generate_breakpad_symbols.py",
        "//components/crash/content/tools/dmp2minidump.py",
-@@ -798,7 +798,7 @@ group("content_shell_crash_test") {
+@@ -814,7 +814,7 @@ group("content_shell_crash_test") {
    if (is_win) {
      data_deps += [ "//build/win:copy_cdb_to_output" ]
    }
diff --git a/devel/electron11/files/patch-content_shell_app_shell__main__delegate.cc b/devel/electron12/files/patch-content_shell_app_shell__main__delegate.cc
similarity index 100%
rename from devel/electron11/files/patch-content_shell_app_shell__main__delegate.cc
rename to devel/electron12/files/patch-content_shell_app_shell__main__delegate.cc
diff --git a/devel/electron11/files/patch-content_shell_browser_shell__browser__context.cc b/devel/electron12/files/patch-content_shell_browser_shell__browser__context.cc
similarity index 100%
rename from devel/electron11/files/patch-content_shell_browser_shell__browser__context.cc
rename to devel/electron12/files/patch-content_shell_browser_shell__browser__context.cc
diff --git a/devel/electron12/files/patch-content_shell_browser_shell__browser__main__parts.cc b/devel/electron12/files/patch-content_shell_browser_shell__browser__main__parts.cc
new file mode 100644
index 0000000000000000000000000000000000000000..ca7096f03007e57e22f86797f7eee955a8998150
--- /dev/null
+++ b/devel/electron12/files/patch-content_shell_browser_shell__browser__main__parts.cc
@@ -0,0 +1,20 @@
+--- content/shell/browser/shell_browser_main_parts.cc.orig	2021-04-14 01:08:48 UTC
++++ content/shell/browser/shell_browser_main_parts.cc
+@@ -55,7 +55,7 @@
+ #if defined(USE_AURA) && defined(USE_X11)
+ #include "ui/events/devices/x11/touch_factory_x11.h"  // nogncheck
+ #endif
+-#if defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
+ #include "ui/base/ime/init/input_method_initializer.h"
+ #endif
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
+@@ -137,7 +137,7 @@ void ShellBrowserMainParts::PostMainMessageLoopStart()
+ }
+ 
+ int ShellBrowserMainParts::PreEarlyInitialization() {
+-#if defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
+   ui::InitializeInputMethodForTesting();
+ #endif
+ #if defined(OS_ANDROID)
diff --git a/devel/electron11/files/patch-content_test_BUILD.gn b/devel/electron12/files/patch-content_test_BUILD.gn
similarity index 52%
rename from devel/electron11/files/patch-content_test_BUILD.gn
rename to devel/electron12/files/patch-content_test_BUILD.gn
index 5aed3d2cc88e496aabf1afbf70972170c2304656..4b570022a08e53e41000c58fe762bd5ad56cd6b1 100644
--- a/devel/electron11/files/patch-content_test_BUILD.gn
+++ b/devel/electron12/files/patch-content_test_BUILD.gn
@@ -1,6 +1,6 @@
---- content/test/BUILD.gn.orig	2021-01-07 00:36:33 UTC
+--- content/test/BUILD.gn.orig	2021-04-14 01:08:48 UTC
 +++ content/test/BUILD.gn
-@@ -1402,10 +1402,12 @@ test("content_browsertests") {
+@@ -1459,10 +1459,12 @@ test("content_browsertests") {
    }
  
    if (is_linux || is_chromeos) {
@@ -14,10 +14,10 @@
 +        "../browser/zygote_host/zygote_browsertest.cc",
 +      ]
 +    }
-     deps += [
-       "//services/service_manager/tests:interfaces",
-       "//ui/gfx:test_support",
-@@ -1625,7 +1627,7 @@ static_library("run_all_unittests") {
+     deps += [ "//ui/gfx:test_support" ]
+ 
+     if (use_atk) {
+@@ -1699,7 +1701,7 @@ static_library("run_all_unittests") {
      ":test_support",
      "//base/test:test_support",
    ]
@@ -26,3 +26,12 @@
      deps += [ "//content/common:set_process_title_linux" ]
    }
  }
+@@ -2532,7 +2534,7 @@ test("content_unittests") {
+     deps += [ "//ui/gfx/x" ]
+   }
+ 
+-  if (is_linux || is_chromeos) {
++  if ((is_linux || is_chromeos) && !is_bsd) {
+     sources += [ "../common/set_process_title_linux_unittest.cc" ]
+     deps += [ "//content/common:set_process_title_linux" ]
+   }
diff --git a/devel/electron11/files/patch-content_test_content__test__suite.cc b/devel/electron12/files/patch-content_test_content__test__suite.cc
similarity index 74%
rename from devel/electron11/files/patch-content_test_content__test__suite.cc
rename to devel/electron12/files/patch-content_test_content__test__suite.cc
index 748eabbe7198522f53f5d00df5a49b46e4c84015..a2a63647579b857084b46673f8356f5234574528 100644
--- a/devel/electron11/files/patch-content_test_content__test__suite.cc
+++ b/devel/electron12/files/patch-content_test_content__test__suite.cc
@@ -1,4 +1,4 @@
---- content/test/content_test_suite.cc.orig	2021-01-07 00:36:33 UTC
+--- content/test/content_test_suite.cc.orig	2021-04-14 01:08:48 UTC
 +++ content/test/content_test_suite.cc
 @@ -83,6 +83,7 @@ void ContentTestSuite::Initialize() {
    // to initialize GL, so don't do it here.
@@ -13,6 +13,6 @@
      gl::init::InitializeExtensionSettingsOneOffPlatform();
    }
 +#endif
-   testing::TestEventListeners& listeners =
-       testing::UnitTest::GetInstance()->listeners();
-   listeners.Append(new TestInitializationListener);
+   // TestEventListeners repeater event propagation is disabled in death test
+   // child process.
+   if (command_line->HasSwitch("gtest_internal_run_death_test")) {
diff --git a/devel/electron11/files/patch-content_utility_BUILD.gn b/devel/electron12/files/patch-content_utility_BUILD.gn
similarity index 71%
rename from devel/electron11/files/patch-content_utility_BUILD.gn
rename to devel/electron12/files/patch-content_utility_BUILD.gn
index 17e0d0def7feb87f5dbc59d3bf9bd04a91f8975f..7574623ed9ef3a5f5ed698a2b63cf2b048eb85eb 100644
--- a/devel/electron11/files/patch-content_utility_BUILD.gn
+++ b/devel/electron12/files/patch-content_utility_BUILD.gn
@@ -1,6 +1,6 @@
---- content/utility/BUILD.gn.orig	2021-01-07 00:36:34 UTC
+--- content/utility/BUILD.gn.orig	2021-04-14 01:08:49 UTC
 +++ content/utility/BUILD.gn
-@@ -84,7 +84,7 @@ source_set("utility") {
+@@ -93,7 +93,7 @@ source_set("utility") {
      deps += [ "//services/proxy_resolver:lib" ]
    }
  
diff --git a/devel/electron11/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.cc b/devel/electron12/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.cc
similarity index 100%
rename from devel/electron11/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.cc
rename to devel/electron12/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.cc
diff --git a/devel/electron11/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.h b/devel/electron12/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.h
similarity index 100%
rename from devel/electron11/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.h
rename to devel/electron12/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.h
diff --git a/devel/electron11/files/patch-content_zygote_zygote__linux.cc b/devel/electron12/files/patch-content_zygote_zygote__linux.cc
similarity index 72%
rename from devel/electron11/files/patch-content_zygote_zygote__linux.cc
rename to devel/electron12/files/patch-content_zygote_zygote__linux.cc
index d9517e03ace6f638af3dc2b4d1de8d35be1868da..95a0282a4b643a0d0b52a3814f3066eeaebe84b8 100644
--- a/devel/electron11/files/patch-content_zygote_zygote__linux.cc
+++ b/devel/electron12/files/patch-content_zygote_zygote__linux.cc
@@ -1,4 +1,4 @@
---- content/zygote/zygote_linux.cc.orig	2021-01-07 00:36:34 UTC
+--- content/zygote/zygote_linux.cc.orig	2021-04-14 01:08:49 UTC
 +++ content/zygote/zygote_linux.cc
 @@ -1,7 +1,7 @@
  // Copyright (c) 2012 The Chromium Authors. All rights reserved.
@@ -9,7 +9,7 @@
  #include "content/zygote/zygote_linux.h"
  
  #include <errno.h>
-@@ -650,3 +650,4 @@ bool Zygote::HandleGetSandboxStatus(int fd, base::Pick
+@@ -651,3 +651,4 @@ bool Zygote::HandleGetSandboxStatus(int fd, base::Pick
  }
  
  }  // namespace content
diff --git a/devel/electron11/files/patch-content_zygote_zygote__main__linux.cc b/devel/electron12/files/patch-content_zygote_zygote__main__linux.cc
similarity index 100%
rename from devel/electron11/files/patch-content_zygote_zygote__main__linux.cc
rename to devel/electron12/files/patch-content_zygote_zygote__main__linux.cc
diff --git a/devel/electron11/files/patch-device_bluetooth_BUILD.gn b/devel/electron12/files/patch-device_bluetooth_BUILD.gn
similarity index 69%
rename from devel/electron11/files/patch-device_bluetooth_BUILD.gn
rename to devel/electron12/files/patch-device_bluetooth_BUILD.gn
index 36ca415add4a3ff21b11c595fc52f3381bac41bf..bdde28f4327c889e4d09ddb4b6a1c263599e2965 100644
--- a/devel/electron11/files/patch-device_bluetooth_BUILD.gn
+++ b/devel/electron12/files/patch-device_bluetooth_BUILD.gn
@@ -1,15 +1,15 @@
---- device/bluetooth/BUILD.gn.orig	2021-01-07 00:36:34 UTC
+--- device/bluetooth/BUILD.gn.orig	2021-04-14 01:08:49 UTC
 +++ device/bluetooth/BUILD.gn
-@@ -8,7 +8,7 @@ if (is_android) {
+@@ -9,7 +9,7 @@ if (is_android) {
  }
- if (is_chromeos) {
+ if (is_chromeos_ash) {
    import("//chromeos/dbus/use_real_dbus_clients.gni")
 -} else if (use_dbus) {
 +} else if (use_dbus && !is_bsd) {
    use_real_dbus_clients = false
  }
  
-@@ -295,7 +295,7 @@ component("bluetooth") {
+@@ -303,7 +303,7 @@ component("bluetooth") {
      ]
    }
  
diff --git a/devel/electron11/files/patch-device_gamepad_gamepad__provider.cc b/devel/electron12/files/patch-device_gamepad_gamepad__provider.cc
similarity index 100%
rename from devel/electron11/files/patch-device_gamepad_gamepad__provider.cc
rename to devel/electron12/files/patch-device_gamepad_gamepad__provider.cc
diff --git a/devel/electron11/files/patch-device_gamepad_hid__writer__linux.cc b/devel/electron12/files/patch-device_gamepad_hid__writer__linux.cc
similarity index 100%
rename from devel/electron11/files/patch-device_gamepad_hid__writer__linux.cc
rename to devel/electron12/files/patch-device_gamepad_hid__writer__linux.cc
diff --git a/devel/electron11/files/patch-electron_BUILD.gn b/devel/electron12/files/patch-electron_BUILD.gn
similarity index 74%
rename from devel/electron11/files/patch-electron_BUILD.gn
rename to devel/electron12/files/patch-electron_BUILD.gn
index 66a5172c028debe7667fa5e8becfc1aa7eee3aa9..fba4aedf6ddb09054148db7d119935a6e2ebd338 100644
--- a/devel/electron11/files/patch-electron_BUILD.gn
+++ b/devel/electron12/files/patch-electron_BUILD.gn
@@ -1,6 +1,6 @@
---- electron/BUILD.gn.orig	2021-01-22 23:55:24 UTC
+--- electron/BUILD.gn.orig	2021-04-20 23:32:33 UTC
 +++ electron/BUILD.gn
-@@ -405,7 +405,7 @@ source_set("electron_lib") {
+@@ -401,7 +401,7 @@ source_set("electron_lib") {
      defines += [ "GDK_DISABLE_DEPRECATION_WARNINGS" ]
    }
  
@@ -9,7 +9,7 @@
      deps += [ "//components/crash/core/app" ]
    }
  
-@@ -437,7 +437,7 @@ source_set("electron_lib") {
+@@ -433,7 +433,7 @@ source_set("electron_lib") {
      ]
    }
  
@@ -18,7 +18,7 @@
      deps += [ "//components/crash/content/browser" ]
    }
  
-@@ -494,6 +494,12 @@ source_set("electron_lib") {
+@@ -490,6 +490,12 @@ source_set("electron_lib") {
        cflags_objcc = [ "-fobjc-weak" ]
      }
    }
@@ -29,9 +29,9 @@
 +    ]
 +  }
    if (is_linux) {
+     libs = [ "xshmfence" ]
      deps += [
-       ":libnotify_loader",
-@@ -1100,7 +1106,7 @@ if (is_mac) {
+@@ -1102,7 +1108,7 @@ if (is_mac) {
        ":electron_app_manifest",
        ":electron_lib",
        ":packed_resources",
diff --git a/devel/electron11/files/patch-electron_chromium__src_chrome_browser_process__singleton__posix.cc b/devel/electron12/files/patch-electron_chromium__src_chrome_browser_process__singleton__posix.cc
similarity index 100%
rename from devel/electron11/files/patch-electron_chromium__src_chrome_browser_process__singleton__posix.cc
rename to devel/electron12/files/patch-electron_chromium__src_chrome_browser_process__singleton__posix.cc
diff --git a/devel/electron11/files/patch-electron_default__app_default__app.ts b/devel/electron12/files/patch-electron_default__app_default__app.ts
similarity index 100%
rename from devel/electron11/files/patch-electron_default__app_default__app.ts
rename to devel/electron12/files/patch-electron_default__app_default__app.ts
diff --git a/devel/electron11/files/patch-electron_filenames.gni b/devel/electron12/files/patch-electron_filenames.gni
similarity index 84%
rename from devel/electron11/files/patch-electron_filenames.gni
rename to devel/electron12/files/patch-electron_filenames.gni
index 9491d12ab5cbad8bfe868aee8add1fdd08d36eee..f1fb39963474719db9c78003faf0b674c6ee1d22 100644
--- a/devel/electron11/files/patch-electron_filenames.gni
+++ b/devel/electron12/files/patch-electron_filenames.gni
@@ -1,6 +1,6 @@
---- electron/filenames.gni.orig	2021-01-22 23:55:24 UTC
+--- electron/filenames.gni.orig	2021-04-20 23:32:33 UTC
 +++ electron/filenames.gni
-@@ -234,8 +234,8 @@ filenames = {
+@@ -235,8 +235,8 @@ filenames = {
      "shell/app/command_line_args.h",
      "shell/app/electron_content_client.cc",
      "shell/app/electron_content_client.h",
diff --git a/devel/electron11/files/patch-electron_lib_browser_api_app.ts b/devel/electron12/files/patch-electron_lib_browser_api_app.ts
similarity index 100%
rename from devel/electron11/files/patch-electron_lib_browser_api_app.ts
rename to devel/electron12/files/patch-electron_lib_browser_api_app.ts
diff --git a/devel/electron11/files/patch-electron_lib_browser_api_dialog.ts b/devel/electron12/files/patch-electron_lib_browser_api_dialog.ts
similarity index 100%
rename from devel/electron11/files/patch-electron_lib_browser_api_dialog.ts
rename to devel/electron12/files/patch-electron_lib_browser_api_dialog.ts
diff --git a/devel/electron11/files/patch-electron_lib_browser_api_menu-item-roles.ts b/devel/electron12/files/patch-electron_lib_browser_api_menu-item-roles.ts
similarity index 100%
rename from devel/electron11/files/patch-electron_lib_browser_api_menu-item-roles.ts
rename to devel/electron12/files/patch-electron_lib_browser_api_menu-item-roles.ts
diff --git a/devel/electron11/files/patch-electron_lib_browser_api_power-monitor.ts b/devel/electron12/files/patch-electron_lib_browser_api_power-monitor.ts
similarity index 78%
rename from devel/electron11/files/patch-electron_lib_browser_api_power-monitor.ts
rename to devel/electron12/files/patch-electron_lib_browser_api_power-monitor.ts
index e39f8d2e5c11618db31caae83c85681bb0449570..fc4b14ab7b32859ad79df4ddfdabbdc7cc2a9976 100644
--- a/devel/electron11/files/patch-electron_lib_browser_api_power-monitor.ts
+++ b/devel/electron12/files/patch-electron_lib_browser_api_power-monitor.ts
@@ -1,6 +1,6 @@
---- electron/lib/browser/api/power-monitor.ts.orig	2021-01-25 12:15:22 UTC
+--- electron/lib/browser/api/power-monitor.ts.orig	2021-04-20 23:32:33 UTC
 +++ electron/lib/browser/api/power-monitor.ts
-@@ -17,7 +17,7 @@ class PowerMonitor extends EventEmitter {
+@@ -18,7 +18,7 @@ class PowerMonitor extends EventEmitter {
          const pm = createPowerMonitor();
          pm.emit = this.emit.bind(this);
  
diff --git a/devel/electron11/files/patch-electron_lib_browser_init.ts b/devel/electron12/files/patch-electron_lib_browser_init.ts
similarity index 76%
rename from devel/electron11/files/patch-electron_lib_browser_init.ts
rename to devel/electron12/files/patch-electron_lib_browser_init.ts
index a59a6d84474fca9b0bf80637a03bfc286899732e..ce712257ac5e03d0cfe9a1aa394f4d071ae1cbad 100644
--- a/devel/electron11/files/patch-electron_lib_browser_init.ts
+++ b/devel/electron12/files/patch-electron_lib_browser_init.ts
@@ -1,6 +1,6 @@
---- electron/lib/browser/init.ts.orig	2021-01-22 23:55:24 UTC
+--- electron/lib/browser/init.ts.orig	2021-04-20 23:32:33 UTC
 +++ electron/lib/browser/init.ts
-@@ -172,7 +172,7 @@ const mainStartupScript = packageJson.main || 'index.j
+@@ -154,7 +154,7 @@ const mainStartupScript = packageJson.main || 'index.j
  const KNOWN_XDG_DESKTOP_VALUES = ['Pantheon', 'Unity:Unity7', 'pop:GNOME'];
  
  function currentPlatformSupportsAppIndicator () {
diff --git a/devel/electron11/files/patch-electron_lib_browser_rpc-server.ts b/devel/electron12/files/patch-electron_lib_browser_rpc-server.ts
similarity index 70%
rename from devel/electron11/files/patch-electron_lib_browser_rpc-server.ts
rename to devel/electron12/files/patch-electron_lib_browser_rpc-server.ts
index 1969f3cd1d031a0a657937ad582dcdde5ca09060..2cfcffdd4460fc215ca96bc8eff195aed25f3cb5 100644
--- a/devel/electron11/files/patch-electron_lib_browser_rpc-server.ts
+++ b/devel/electron12/files/patch-electron_lib_browser_rpc-server.ts
@@ -1,6 +1,6 @@
---- electron/lib/browser/rpc-server.ts.orig	2021-01-25 12:26:10 UTC
+--- electron/lib/browser/rpc-server.ts.orig	2021-04-20 23:32:33 UTC
 +++ electron/lib/browser/rpc-server.ts
-@@ -42,7 +42,7 @@ const allowedClipboardMethods = (() => {
+@@ -43,7 +43,7 @@ const allowedClipboardMethods = (() => {
    switch (process.platform) {
      case 'darwin':
        return new Set(['readFindText', 'writeFindText']);
diff --git a/devel/electron11/files/patch-electron_lib_common_api_clipboard.ts b/devel/electron12/files/patch-electron_lib_common_api_clipboard.ts
similarity index 75%
rename from devel/electron11/files/patch-electron_lib_common_api_clipboard.ts
rename to devel/electron12/files/patch-electron_lib_common_api_clipboard.ts
index a56db86de3eae4f7ad77e66faecb2b5b278d3238..f80342a37f204dd5a016d2d33bba97cbaa30f27b 100644
--- a/devel/electron11/files/patch-electron_lib_common_api_clipboard.ts
+++ b/devel/electron12/files/patch-electron_lib_common_api_clipboard.ts
@@ -1,6 +1,6 @@
---- electron/lib/common/api/clipboard.ts.orig	2021-01-25 12:16:04 UTC
+--- electron/lib/common/api/clipboard.ts.orig	2021-04-20 23:32:33 UTC
 +++ electron/lib/common/api/clipboard.ts
-@@ -12,7 +12,7 @@ if (process.type === 'renderer') {
+@@ -14,7 +14,7 @@ if (process.type === 'renderer') {
      };
    };
  
diff --git a/devel/electron11/files/patch-electron_script_lib_config.py b/devel/electron12/files/patch-electron_script_lib_config.py
similarity index 66%
rename from devel/electron11/files/patch-electron_script_lib_config.py
rename to devel/electron12/files/patch-electron_script_lib_config.py
index 49fce7bcdee2936650518b72b21b156aebe23819..1ebf3a917f642eef552bfccc1e82852d447114db 100644
--- a/devel/electron11/files/patch-electron_script_lib_config.py
+++ b/devel/electron12/files/patch-electron_script_lib_config.py
@@ -1,6 +1,6 @@
---- electron/script/lib/config.py.orig	2021-01-22 23:55:24 UTC
+--- electron/script/lib/config.py.orig	2021-04-20 23:32:33 UTC
 +++ electron/script/lib/config.py
-@@ -21,6 +21,9 @@ BASE_URL = os.getenv('LIBCHROMIUMCONTENT_MIRROR') or \
+@@ -19,6 +19,9 @@ BASE_URL = os.getenv('LIBCHROMIUMCONTENT_MIRROR') or \
  PLATFORM = {
    'cygwin': 'win32',
    'darwin': 'darwin',
diff --git a/devel/electron11/files/patch-electron_script_lib_utils.js b/devel/electron12/files/patch-electron_script_lib_utils.js
similarity index 100%
rename from devel/electron11/files/patch-electron_script_lib_utils.js
rename to devel/electron12/files/patch-electron_script_lib_utils.js
diff --git a/devel/electron11/files/patch-electron_script_spec-runner.js b/devel/electron12/files/patch-electron_script_spec-runner.js
similarity index 81%
rename from devel/electron11/files/patch-electron_script_spec-runner.js
rename to devel/electron12/files/patch-electron_script_spec-runner.js
index 189c573cdad9e700137abf0d06713873efde5b69..5afacc06f8d9c4d4075859d338b716b93b3b9a94 100644
--- a/devel/electron11/files/patch-electron_script_spec-runner.js
+++ b/devel/electron12/files/patch-electron_script_spec-runner.js
@@ -1,6 +1,6 @@
---- electron/script/spec-runner.js.orig	2021-01-22 23:55:24 UTC
+--- electron/script/spec-runner.js.orig	2021-04-20 23:32:33 UTC
 +++ electron/script/spec-runner.js
-@@ -127,7 +127,7 @@ async function runElectronTests () {
+@@ -126,7 +126,7 @@ async function runElectronTests () {
  async function runRemoteBasedElectronTests () {
    let exe = path.resolve(BASE, utils.getElectronExec());
    const runnerArgs = ['electron/spec', ...unknownArgs.slice(2)];
@@ -9,7 +9,7 @@
      runnerArgs.unshift(path.resolve(__dirname, 'dbus_mock.py'), exe);
      exe = 'python';
    }
-@@ -198,7 +198,7 @@ async function runNativeElectronTests () {
+@@ -197,7 +197,7 @@ async function runNativeElectronTests () {
  async function runMainProcessElectronTests () {
    let exe = path.resolve(BASE, utils.getElectronExec());
    const runnerArgs = ['electron/spec-main', ...unknownArgs.slice(2)];
diff --git a/devel/electron11/files/patch-electron_shell_app_electron__main.cc b/devel/electron12/files/patch-electron_shell_app_electron__main.cc
similarity index 85%
rename from devel/electron11/files/patch-electron_shell_app_electron__main.cc
rename to devel/electron12/files/patch-electron_shell_app_electron__main.cc
index 6d52fe1b3899eb5b836f1d82b462b8523c2582e9..4313998993fe87f084dd4fe788e59938d40c4957 100644
--- a/devel/electron11/files/patch-electron_shell_app_electron__main.cc
+++ b/devel/electron12/files/patch-electron_shell_app_electron__main.cc
@@ -1,4 +1,4 @@
---- electron/shell/app/electron_main.cc.orig	2021-01-22 23:55:24 UTC
+--- electron/shell/app/electron_main.cc.orig	2021-04-20 23:32:33 UTC
 +++ electron/shell/app/electron_main.cc
 @@ -32,12 +32,12 @@
  #include "shell/app/electron_main_delegate.h"
@@ -15,7 +15,7 @@
  #include <mach-o/dyld.h>
  #include <unistd.h>
  #include <cstdio>
-@@ -210,7 +210,7 @@ int APIENTRY wWinMain(HINSTANCE instance, HINSTANCE, w
+@@ -212,7 +212,7 @@ int APIENTRY wWinMain(HINSTANCE instance, HINSTANCE, w
    return content::ContentMain(params);
  }
  
@@ -24,7 +24,7 @@
  
  int main(int argc, char* argv[]) {
    FixStdioStreams();
-@@ -231,7 +231,7 @@ int main(int argc, char* argv[]) {
+@@ -233,7 +233,7 @@ int main(int argc, char* argv[]) {
    return content::ContentMain(params);
  }
  
diff --git a/devel/electron11/files/patch-electron_shell_app_electron__main__delegate.cc b/devel/electron12/files/patch-electron_shell_app_electron__main__delegate.cc
similarity index 71%
rename from devel/electron11/files/patch-electron_shell_app_electron__main__delegate.cc
rename to devel/electron12/files/patch-electron_shell_app_electron__main__delegate.cc
index ea4e910d484aa0a38b0974bf817c79580d82738b..6a362bc3d1ca60f3e788095332ef9b872423369d 100644
--- a/devel/electron11/files/patch-electron_shell_app_electron__main__delegate.cc
+++ b/devel/electron12/files/patch-electron_shell_app_electron__main__delegate.cc
@@ -1,6 +1,6 @@
---- electron/shell/app/electron_main_delegate.cc.orig	2021-01-22 23:55:24 UTC
+--- electron/shell/app/electron_main_delegate.cc.orig	2021-04-20 23:32:33 UTC
 +++ electron/shell/app/electron_main_delegate.cc
-@@ -247,7 +247,7 @@ bool ElectronMainDelegate::BasicStartupComplete(int* e
+@@ -246,7 +246,7 @@ bool ElectronMainDelegate::BasicStartupComplete(int* e
      base::win::PinUser32();
  #endif
  
@@ -9,7 +9,7 @@
    // Check for --no-sandbox parameter when running as root.
    if (getuid() == 0 && IsSandboxEnabled(command_line))
      LOG(FATAL) << "Running as root without --"
-@@ -311,7 +311,7 @@ void ElectronMainDelegate::PreSandboxStartup() {
+@@ -310,7 +310,7 @@ void ElectronMainDelegate::PreSandboxStartup() {
    }
  #endif
  
diff --git a/devel/electron11/files/patch-electron_shell_app_node__main.cc b/devel/electron12/files/patch-electron_shell_app_node__main.cc
similarity index 84%
rename from devel/electron11/files/patch-electron_shell_app_node__main.cc
rename to devel/electron12/files/patch-electron_shell_app_node__main.cc
index d7430abb8991922a7909ae7e5dc8f12aacfeabe4..3883aca00c1c7cb0e35a4dd82368f54843800495 100644
--- a/devel/electron11/files/patch-electron_shell_app_node__main.cc
+++ b/devel/electron12/files/patch-electron_shell_app_node__main.cc
@@ -1,6 +1,6 @@
---- electron/shell/app/node_main.cc.orig	2021-01-22 23:55:24 UTC
+--- electron/shell/app/node_main.cc.orig	2021-04-20 23:32:33 UTC
 +++ electron/shell/app/node_main.cc
-@@ -39,7 +39,7 @@
+@@ -38,7 +38,7 @@
  #include "chrome/child/v8_crashpad_support_win.h"
  #endif
  
@@ -9,7 +9,7 @@
  #include "components/crash/core/app/crashpad.h"  // nogncheck
  #include "shell/app/electron_crash_reporter_client.h"
  #include "shell/browser/api/electron_api_crash_reporter.h"
-@@ -87,7 +87,7 @@ void SetNodeCliFlags() {
+@@ -86,7 +86,7 @@ void SetNodeCliFlags() {
    ProcessGlobalArgs(&args, nullptr, &errors, node::kDisallowedInEnvironment);
  }
  
@@ -18,7 +18,7 @@
  void SetCrashKeyStub(const std::string& key, const std::string& value) {}
  void ClearCrashKeyStub(const std::string& key) {}
  #endif
-@@ -127,7 +127,7 @@ void CrashReporterStart(gin_helper::Dictionary options
+@@ -126,7 +126,7 @@ void CrashReporterStart(gin_helper::Dictionary options
  
  v8::Local<v8::Value> GetParameters(v8::Isolate* isolate) {
    std::map<std::string, std::string> keys;
@@ -27,7 +27,7 @@
    electron::crash_keys::GetCrashKeys(&keys);
  #endif
    return gin::ConvertToV8(isolate, keys);
-@@ -140,7 +140,7 @@ int NodeMain(int argc, char* argv[]) {
+@@ -139,7 +139,7 @@ int NodeMain(int argc, char* argv[]) {
    v8_crashpad_support::SetUp();
  #endif
  
@@ -36,7 +36,7 @@
    ElectronCrashReporterClient::Create();
  #endif
  
-@@ -148,7 +148,7 @@ int NodeMain(int argc, char* argv[]) {
+@@ -147,7 +147,7 @@ int NodeMain(int argc, char* argv[]) {
    crash_reporter::InitializeCrashpad(false, "node");
  #endif
  
diff --git a/devel/electron11/files/patch-electron_shell_browser_api_electron__api__app.cc b/devel/electron12/files/patch-electron_shell_browser_api_electron__api__app.cc
similarity index 80%
rename from devel/electron11/files/patch-electron_shell_browser_api_electron__api__app.cc
rename to devel/electron12/files/patch-electron_shell_browser_api_electron__api__app.cc
index d41fa5b4704a48f71f95490c41daebfddc21871b..e944e04a62564011519e39b07ffcb685fa13b39c 100644
--- a/devel/electron11/files/patch-electron_shell_browser_api_electron__api__app.cc
+++ b/devel/electron12/files/patch-electron_shell_browser_api_electron__api__app.cc
@@ -1,6 +1,6 @@
---- electron/shell/browser/api/electron_api_app.cc.orig	2021-01-22 23:55:24 UTC
+--- electron/shell/browser/api/electron_api_app.cc.orig	2021-04-20 23:32:33 UTC
 +++ electron/shell/browser/api/electron_api_app.cc
-@@ -656,7 +656,7 @@ void App::OnWillFinishLaunching() {
+@@ -655,7 +655,7 @@ void App::OnWillFinishLaunching() {
  }
  
  void App::OnFinishLaunching(const base::DictionaryValue& launch_info) {
@@ -9,7 +9,7 @@
    // Set the application name for audio streams shown in external
    // applications. Only affects pulseaudio currently.
    media::AudioManager::SetGlobalAppName(Browser::Get()->GetName());
-@@ -1004,7 +1004,7 @@ void App::SetPath(gin_helper::ErrorThrower thrower,
+@@ -1005,7 +1005,7 @@ void App::SetPath(gin_helper::ErrorThrower thrower,
  }
  
  void App::SetDesktopName(const std::string& desktop_name) {
@@ -18,7 +18,7 @@
    std::unique_ptr<base::Environment> env(base::Environment::Create());
    env->SetVar("CHROME_DESKTOP", desktop_name);
  #endif
-@@ -1353,7 +1353,7 @@ std::vector<gin_helper::Dictionary> App::GetAppMetrics
+@@ -1358,7 +1358,7 @@ std::vector<gin_helper::Dictionary> App::GetAppMetrics
        pid_dict.Set("name", process_metric.second->name);
      }
  
@@ -27,7 +27,7 @@
      auto memory_info = process_metric.second->GetMemoryInfo();
  
      gin_helper::Dictionary memory_dict = gin::Dictionary::CreateEmpty(isolate);
-@@ -1565,7 +1565,7 @@ gin::ObjectTemplateBuilder App::GetObjectTemplateBuild
+@@ -1571,7 +1571,7 @@ gin::ObjectTemplateBuilder App::GetObjectTemplateBuild
        .SetMethod(
            "removeAsDefaultProtocolClient",
            base::BindRepeating(&Browser::RemoveAsDefaultProtocolClient, browser))
@@ -36,7 +36,7 @@
        .SetMethod(
            "getApplicationInfoForProtocol",
            base::BindRepeating(&Browser::GetApplicationInfoForProtocol, browser))
-@@ -1622,7 +1622,7 @@ gin::ObjectTemplateBuilder App::GetObjectTemplateBuild
+@@ -1628,7 +1628,7 @@ gin::ObjectTemplateBuilder App::GetObjectTemplateBuild
        .SetMethod("getJumpListSettings", &App::GetJumpListSettings)
        .SetMethod("setJumpList", &App::SetJumpList)
  #endif
diff --git a/devel/electron12/files/patch-electron_shell_browser_api_electron__api__base__window.cc b/devel/electron12/files/patch-electron_shell_browser_api_electron__api__base__window.cc
new file mode 100644
index 0000000000000000000000000000000000000000..099c7a87b3d9a69c8c4f7970b81a1922ec0985dd
--- /dev/null
+++ b/devel/electron12/files/patch-electron_shell_browser_api_electron__api__base__window.cc
@@ -0,0 +1,11 @@
+--- electron/shell/browser/api/electron_api_base_window.cc.orig	2021-04-22 08:15:23 UTC
++++ electron/shell/browser/api/electron_api_base_window.cc
+@@ -1037,7 +1037,7 @@ void BaseWindow::SetIconImpl(v8::Isolate* isolate,
+   static_cast<NativeWindowViews*>(window_.get())
+       ->SetIcon(native_image->GetHICON(GetSystemMetrics(SM_CXSMICON)),
+                 native_image->GetHICON(GetSystemMetrics(SM_CXICON)));
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+   static_cast<NativeWindowViews*>(window_.get())
+       ->SetIcon(native_image->image().AsImageSkia());
+ #endif
diff --git a/devel/electron11/files/patch-electron_shell_browser_api_electron__api__crash__reporter.cc b/devel/electron12/files/patch-electron_shell_browser_api_electron__api__crash__reporter.cc
similarity index 100%
rename from devel/electron11/files/patch-electron_shell_browser_api_electron__api__crash__reporter.cc
rename to devel/electron12/files/patch-electron_shell_browser_api_electron__api__crash__reporter.cc
diff --git a/devel/electron11/files/patch-electron_shell_browser_api_electron__api__web__contents.cc b/devel/electron12/files/patch-electron_shell_browser_api_electron__api__web__contents.cc
similarity index 74%
rename from devel/electron11/files/patch-electron_shell_browser_api_electron__api__web__contents.cc
rename to devel/electron12/files/patch-electron_shell_browser_api_electron__api__web__contents.cc
index 5528abb6a8265ce238df65bec2855aaf069b9612..e7cd26aa69c1a32896984a0110dfcf9ceb85b10b 100644
--- a/devel/electron11/files/patch-electron_shell_browser_api_electron__api__web__contents.cc
+++ b/devel/electron12/files/patch-electron_shell_browser_api_electron__api__web__contents.cc
@@ -1,6 +1,6 @@
---- electron/shell/browser/api/electron_api_web_contents.cc.orig	2021-03-23 15:10:33 UTC
+--- electron/shell/browser/api/electron_api_web_contents.cc.orig	2021-04-20 23:32:33 UTC
 +++ electron/shell/browser/api/electron_api_web_contents.cc
-@@ -123,11 +123,11 @@
+@@ -145,11 +145,11 @@
  #include "ui/base/cocoa/defaults_utils.h"
  #endif
  
@@ -14,7 +14,7 @@
  #include "ui/gfx/font_render_params.h"
  #endif
  
-@@ -360,7 +360,7 @@ base::Optional<base::TimeDelta> GetCursorBlinkInterval
+@@ -388,7 +388,7 @@ base::Optional<base::TimeDelta> GetCursorBlinkInterval
    base::TimeDelta interval;
    if (ui::TextInsertionCaretBlinkPeriod(&interval))
      return interval;
@@ -23,7 +23,7 @@
    if (auto* linux_ui = views::LinuxUI::instance())
      return linux_ui->GetCursorBlinkInterval();
  #elif defined(OS_WIN)
-@@ -660,7 +660,7 @@ void WebContents::InitWithSessionAndOptions(
+@@ -801,7 +801,7 @@ void WebContents::InitWithSessionAndOptions(
    accept_languages.pop_back();
    prefs->accept_languages = accept_languages;
  
@@ -32,7 +32,7 @@
    // Update font settings.
    static const base::NoDestructor<gfx::FontRenderParams> params(
        gfx::GetFontRenderParams(gfx::FontRenderParamsQuery(), nullptr));
-@@ -1816,7 +1816,7 @@ void WebContents::ForcefullyCrashRenderer() {
+@@ -2102,7 +2102,7 @@ void WebContents::ForcefullyCrashRenderer() {
  
    content::RenderProcessHost* rph = rwh->GetProcess();
    if (rph) {
@@ -41,7 +41,7 @@
      // A generic |CrashDumpHungChildProcess()| is not implemented for Linux.
      // Instead we send an explicit IPC to crash on the renderer's IO thread.
      rph->ForceCrash();
-@@ -2395,7 +2395,7 @@ void WebContents::CopyImageAt(int x, int y) {
+@@ -2668,7 +2668,7 @@ void WebContents::CopyImageAt(int x, int y) {
  void WebContents::Focus() {
    // Focusing on WebContents does not automatically focus the window on macOS
    // and Linux, do it manually to match the behavior on Windows.
@@ -50,3 +50,12 @@
    if (owner_window())
      owner_window()->Focus(true);
  #endif
+@@ -3455,7 +3455,7 @@ gfx::ImageSkia WebContents::GetDevToolsWindowIcon() {
+ }
+ #endif
+ 
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void WebContents::GetDevToolsWindowWMClass(std::string* name,
+                                            std::string* class_name) {
+   *class_name = Browser::Get()->GetName();
diff --git a/devel/electron12/files/patch-electron_shell_browser_api_electron__api__web__contents.h b/devel/electron12/files/patch-electron_shell_browser_api_electron__api__web__contents.h
new file mode 100644
index 0000000000000000000000000000000000000000..685943a16d7897a01dac3292a8872fa03fb1a9cb
--- /dev/null
+++ b/devel/electron12/files/patch-electron_shell_browser_api_electron__api__web__contents.h
@@ -0,0 +1,11 @@
+--- electron/shell/browser/api/electron_api_web_contents.h.orig	2021-04-22 15:13:27 UTC
++++ electron/shell/browser/api/electron_api_web_contents.h
+@@ -669,7 +669,7 @@ class WebContents : public gin::Wrappable<WebContents>
+ #if defined(TOOLKIT_VIEWS) && !defined(OS_MAC)
+   gfx::ImageSkia GetDevToolsWindowIcon() override;
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+   void GetDevToolsWindowWMClass(std::string* name,
+                                 std::string* class_name) override;
+ #endif
diff --git a/devel/electron11/files/patch-electron_shell_browser_api_process__metric.h b/devel/electron12/files/patch-electron_shell_browser_api_process__metric.h
similarity index 79%
rename from devel/electron11/files/patch-electron_shell_browser_api_process__metric.h
rename to devel/electron12/files/patch-electron_shell_browser_api_process__metric.h
index 924fcfeaeebb12d32db377f5144ccfae14277d59..eeecfdce675da6810bffbe36f76a756a487f03ad 100644
--- a/devel/electron11/files/patch-electron_shell_browser_api_process__metric.h
+++ b/devel/electron12/files/patch-electron_shell_browser_api_process__metric.h
@@ -1,4 +1,4 @@
---- electron/shell/browser/api/process_metric.h.orig	2021-01-22 23:55:24 UTC
+--- electron/shell/browser/api/process_metric.h.orig	2021-04-20 23:32:33 UTC
 +++ electron/shell/browser/api/process_metric.h
 @@ -14,7 +14,7 @@
  
@@ -9,7 +9,7 @@
  struct ProcessMemoryInfo {
    size_t working_set_size = 0;
    size_t peak_working_set_size = 0;
-@@ -46,7 +46,7 @@ struct ProcessMetric {
+@@ -48,7 +48,7 @@ struct ProcessMetric {
                  const std::string& name = std::string());
    ~ProcessMetric();
  
diff --git a/devel/electron11/files/patch-electron_shell_browser_browser.h b/devel/electron12/files/patch-electron_shell_browser_browser.h
similarity index 79%
rename from devel/electron11/files/patch-electron_shell_browser_browser.h
rename to devel/electron12/files/patch-electron_shell_browser_browser.h
index 5aaffa71b3fc1e9d0077b6538ce3d13175009b06..3181becc68a5e511d323363f7eb7b16587415ebd 100644
--- a/devel/electron11/files/patch-electron_shell_browser_browser.h
+++ b/devel/electron12/files/patch-electron_shell_browser_browser.h
@@ -1,6 +1,6 @@
---- electron/shell/browser/browser.h.orig	2021-01-22 23:55:24 UTC
+--- electron/shell/browser/browser.h.orig	2021-04-20 23:32:33 UTC
 +++ electron/shell/browser/browser.h
-@@ -100,7 +100,7 @@ class Browser : public WindowListObserver {
+@@ -101,7 +101,7 @@ class Browser : public WindowListObserver {
  
    base::string16 GetApplicationNameForProtocol(const GURL& url);
  
@@ -9,7 +9,7 @@
    // get the name, icon and path for an application
    v8::Local<v8::Promise> GetApplicationInfoForProtocol(v8::Isolate* isolate,
                                                         const GURL& url);
-@@ -258,10 +258,10 @@ class Browser : public WindowListObserver {
+@@ -259,10 +259,10 @@ class Browser : public WindowListObserver {
    PCWSTR GetAppUserModelID();
  #endif  // defined(OS_WIN)
  
@@ -22,7 +22,7 @@
  
    // Tell the application to open a file.
    bool OpenFile(const std::string& file_path);
-@@ -358,7 +358,7 @@ class Browser : public WindowListObserver {
+@@ -359,7 +359,7 @@ class Browser : public WindowListObserver {
    base::Time last_dock_show_;
  #endif
  
diff --git a/devel/electron12/files/patch-electron_shell_browser_browser__linux.cc b/devel/electron12/files/patch-electron_shell_browser_browser__linux.cc
new file mode 100644
index 0000000000000000000000000000000000000000..d1e277507c2f62a985fc79cbfd7448457d45bdbf
--- /dev/null
+++ b/devel/electron12/files/patch-electron_shell_browser_browser__linux.cc
@@ -0,0 +1,11 @@
+--- electron/shell/browser/browser_linux.cc.orig	2021-04-22 08:22:30 UTC
++++ electron/shell/browser/browser_linux.cc
+@@ -15,7 +15,7 @@
+ #include "shell/browser/window_list.h"
+ #include "shell/common/application_info.h"
+ 
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "shell/browser/linux/unity_service.h"
+ #include "ui/gtk/gtk_util.h"
+ #endif
diff --git a/devel/electron11/files/patch-electron_shell_browser_electron__browser__client.cc b/devel/electron12/files/patch-electron_shell_browser_electron__browser__client.cc
similarity index 92%
rename from devel/electron11/files/patch-electron_shell_browser_electron__browser__client.cc
rename to devel/electron12/files/patch-electron_shell_browser_electron__browser__client.cc
index ce18ebd4553d67ce264130429bf6413485de63fd..b5f1da38f90b8c3a41d4819db07634c490861f2a 100644
--- a/devel/electron11/files/patch-electron_shell_browser_electron__browser__client.cc
+++ b/devel/electron12/files/patch-electron_shell_browser_electron__browser__client.cc
@@ -1,6 +1,6 @@
---- electron/shell/browser/electron_browser_client.cc.orig	2021-01-22 23:55:24 UTC
+--- electron/shell/browser/electron_browser_client.cc.orig	2021-04-20 23:32:33 UTC
 +++ electron/shell/browser/electron_browser_client.cc
-@@ -174,7 +174,7 @@
+@@ -169,7 +169,7 @@
  #include "content/public/common/child_process_host.h"
  #endif
  
diff --git a/devel/electron12/files/patch-electron_shell_browser_electron__browser__main__parts.cc b/devel/electron12/files/patch-electron_shell_browser_electron__browser__main__parts.cc
new file mode 100644
index 0000000000000000000000000000000000000000..5298f213efea88a410b9883785b002e7d0ee507d
--- /dev/null
+++ b/devel/electron12/files/patch-electron_shell_browser_electron__browser__main__parts.cc
@@ -0,0 +1,74 @@
+--- electron/shell/browser/electron_browser_main_parts.cc.orig	2021-04-20 23:32:33 UTC
++++ electron/shell/browser/electron_browser_main_parts.cc
+@@ -57,7 +57,7 @@
+ #include "ui/wm/core/wm_state.h"
+ #endif
+ 
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/environment.h"
+ #include "base/nix/xdg_util.h"
+ #include "base/threading/thread_task_runner_handle.h"
+@@ -155,7 +155,7 @@ base::string16 MediaStringProvider(media::MessageId id
+   }
+ }
+ 
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void OverrideLinuxAppDataPath() {
+   base::FilePath path;
+   if (base::PathService::Get(DIR_APP_DATA, &path))
+@@ -183,7 +183,7 @@ void UpdateDarkThemeSetting() {
+ 
+ }  // namespace
+ 
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ class DarkThemeObserver : public ui::NativeThemeObserver {
+  public:
+   DarkThemeObserver() = default;
+@@ -233,7 +233,7 @@ int ElectronBrowserMainParts::GetExitCode() {
+ 
+ int ElectronBrowserMainParts::PreEarlyInitialization() {
+   field_trial_list_ = std::make_unique<base::FieldTrialList>(nullptr);
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+   OverrideLinuxAppDataPath();
+ #endif
+ 
+@@ -290,7 +290,7 @@ int ElectronBrowserMainParts::PreCreateThreads() {
+ #if defined(USE_AURA)
+   display::Screen* screen = views::CreateDesktopScreen();
+   display::Screen::SetScreenInstance(screen);
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+   views::LinuxUI::instance()->UpdateDeviceScaleFactor();
+ #endif
+ #endif
+@@ -307,7 +307,7 @@ int ElectronBrowserMainParts::PreCreateThreads() {
+   // happen before the ResourceBundle is loaded
+   if (locale.empty())
+     l10n_util::OverrideLocaleWithCocoaLocale();
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+   // l10n_util::GetApplicationLocaleInternal uses g_get_language_names(),
+   // which keys off of getenv("LC_ALL").
+   // We must set this env first to make ui::ResourceBundle accept the custom
+@@ -330,7 +330,7 @@ int ElectronBrowserMainParts::PreCreateThreads() {
+   ElectronBrowserClient::SetApplicationLocale(app_locale);
+   fake_browser_process_->SetApplicationLocale(app_locale);
+ 
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+   // Reset to the original LC_ALL since we should not be changing it.
+   if (!locale.empty()) {
+     if (lc_all)
+@@ -385,7 +385,7 @@ void ElectronBrowserMainParts::ToolkitInitialized() {
+     ui::GtkUiDelegate::SetInstance(gtk_ui_delegate_.get());
+   }
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+   views::LinuxUI* linux_ui = BuildGtkUi(ui::GtkUiDelegate::instance());
+   views::LinuxUI::SetInstance(linux_ui);
+   linux_ui->Initialize();
diff --git a/devel/electron12/files/patch-electron_shell_browser_electron__browser__main__parts.h b/devel/electron12/files/patch-electron_shell_browser_electron__browser__main__parts.h
new file mode 100644
index 0000000000000000000000000000000000000000..b66189da5da23625bd9f5e5000a1705ebd1b25e5
--- /dev/null
+++ b/devel/electron12/files/patch-electron_shell_browser_electron__browser__main__parts.h
@@ -0,0 +1,20 @@
+--- electron/shell/browser/electron_browser_main_parts.h.orig	2021-04-22 08:27:19 UTC
++++ electron/shell/browser/electron_browser_main_parts.h
+@@ -58,7 +58,7 @@ class ViewsDelegate;
+ class ViewsDelegateMac;
+ #endif
+ 
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ class DarkThemeObserver;
+ #endif
+ 
+@@ -129,7 +129,7 @@ class ElectronBrowserMainParts : public content::Brows
+   std::unique_ptr<ui::GtkUiDelegate> gtk_ui_delegate_;
+ #endif
+ 
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+   // Used to notify the native theme of changes to dark mode.
+   std::unique_ptr<DarkThemeObserver> dark_theme_observer_;
+ #endif
diff --git a/devel/electron11/files/patch-electron_shell_browser_electron__browser__main__parts__posix.cc b/devel/electron12/files/patch-electron_shell_browser_electron__browser__main__parts__posix.cc
similarity index 100%
rename from devel/electron11/files/patch-electron_shell_browser_electron__browser__main__parts__posix.cc
rename to devel/electron12/files/patch-electron_shell_browser_electron__browser__main__parts__posix.cc
diff --git a/devel/electron12/files/patch-electron_shell_browser_native__window.cc b/devel/electron12/files/patch-electron_shell_browser_native__window.cc
new file mode 100644
index 0000000000000000000000000000000000000000..243f179d5dd2e681dfdca71a18ceeed59471c52c
--- /dev/null
+++ b/devel/electron12/files/patch-electron_shell_browser_native__window.cc
@@ -0,0 +1,11 @@
+--- electron/shell/browser/native_window.cc.orig	2021-04-22 08:34:42 UTC
++++ electron/shell/browser/native_window.cc
+@@ -109,7 +109,7 @@ void NativeWindow::InitFromOptions(const gin_helper::D
+   } else {
+     SetSizeConstraints(size_constraints);
+   }
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+   bool resizable;
+   if (options.Get(options::kResizable, &resizable)) {
+     SetResizable(resizable);
diff --git a/devel/electron12/files/patch-electron_shell_browser_native__window__views.cc b/devel/electron12/files/patch-electron_shell_browser_native__window__views.cc
new file mode 100644
index 0000000000000000000000000000000000000000..3aaa28f24ed0e917786a2b908d8f071b2eaa0866
--- /dev/null
+++ b/devel/electron12/files/patch-electron_shell_browser_native__window__views.cc
@@ -0,0 +1,146 @@
+--- electron/shell/browser/native_window_views.cc.orig	2021-04-30 18:57:27 UTC
++++ electron/shell/browser/native_window_views.cc
+@@ -44,7 +44,7 @@
+ #include "ui/wm/core/shadow_types.h"
+ #include "ui/wm/core/window_util.h"
+ 
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/strings/string_util.h"
+ #include "shell/browser/browser.h"
+ #include "shell/browser/linux/unity_service.h"
+@@ -203,7 +203,7 @@ NativeWindowViews::NativeWindowViews(const gin_helper:
+     params.parent = parent->GetNativeWindow();
+ 
+   params.native_widget = new ElectronDesktopNativeWidgetAura(this);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+   std::string name = Browser::Get()->GetName();
+   // Set WM_WINDOW_ROLE.
+   params.wm_role_name = "browser-window";
+@@ -233,7 +233,7 @@ NativeWindowViews::NativeWindowViews(const gin_helper:
+   }
+ #endif
+ 
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+   if (parent)
+     SetParentWindow(parent);
+ #endif
+@@ -328,7 +328,7 @@ NativeWindowViews::NativeWindowViews(const gin_helper:
+     last_window_state_ = ui::SHOW_STATE_NORMAL;
+ #endif
+ 
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+   // Listen to move events.
+   aura::Window* window = GetNativeWindow();
+   if (window)
+@@ -348,7 +348,7 @@ NativeWindowViews::~NativeWindowViews() {
+   SetForwardMouseMessages(false);
+ #endif
+ 
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+   aura::Window* window = GetNativeWindow();
+   if (window)
+     window->RemovePreTargetHandler(this);
+@@ -463,7 +463,7 @@ bool NativeWindowViews::IsVisible() {
+ bool NativeWindowViews::IsEnabled() {
+ #if defined(OS_WIN)
+   return ::IsWindowEnabled(GetAcceleratedWidget());
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #if defined(USE_X11)
+   if (!features::IsUsingOzonePlatform()) {
+     return !event_disabler_.get();
+@@ -522,7 +522,7 @@ void NativeWindowViews::SetEnabledInternal(bool enable
+ #endif
+ }
+ 
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void NativeWindowViews::Maximize() {
+   if (IsVisible())
+     widget()->Maximize();
+@@ -638,7 +638,7 @@ bool NativeWindowViews::IsFullscreen() const {
+ }
+ 
+ void NativeWindowViews::SetBounds(const gfx::Rect& bounds, bool animate) {
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+   // On Linux and Windows the minimum and maximum size should be updated with
+   // window size when window is not resizable.
+   if (!resizable_) {
+@@ -855,7 +855,7 @@ bool NativeWindowViews::IsClosable() {
+     return false;
+   }
+   return !(info.fState & MFS_DISABLED);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+   return true;
+ #endif
+ }
+@@ -1231,7 +1231,7 @@ void NativeWindowViews::SetProgressBar(double progress
+                                        NativeWindow::ProgressState state) {
+ #if defined(OS_WIN)
+   taskbar_host_.SetProgressBar(GetAcceleratedWidget(), progress, state);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+   if (unity::IsRunning()) {
+     unity::SetProgressFraction(progress);
+   }
+@@ -1291,7 +1291,7 @@ content::DesktopMediaID NativeWindowViews::GetDesktopM
+ #if defined(OS_WIN)
+   window_handle =
+       reinterpret_cast<content::DesktopMediaID::Id>(accelerated_widget);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+   window_handle = static_cast<uint32_t>(accelerated_widget);
+ #endif
+   aura::WindowTreeHost* const host =
+@@ -1394,7 +1394,7 @@ void NativeWindowViews::SetIcon(HICON window_icon, HIC
+   SendMessage(hwnd, WM_SETICON, ICON_BIG,
+               reinterpret_cast<LPARAM>(app_icon_.get()));
+ }
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ void NativeWindowViews::SetIcon(const gfx::ImageSkia& icon) {
+   auto* tree_host = views::DesktopWindowTreeHostLinux::GetHostForWidget(
+       GetAcceleratedWidget());
+@@ -1444,7 +1444,7 @@ void NativeWindowViews::OnWidgetBoundsChanged(views::W
+ }
+ 
+ void NativeWindowViews::OnWidgetDestroying(views::Widget* widget) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+   aura::Window* window = GetNativeWindow();
+   if (window)
+     window->RemovePreTargetHandler(this);
+@@ -1482,7 +1482,7 @@ bool NativeWindowViews::CanMaximize() const {
+ bool NativeWindowViews::CanMinimize() const {
+ #if defined(OS_WIN)
+   return minimizable_;
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+   return true;
+ #endif
+ }
+@@ -1554,7 +1554,7 @@ void NativeWindowViews::HandleKeyboardEvent(
+   if (widget_destroyed_)
+     return;
+ 
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+   if (event.windows_key_code == ui::VKEY_BROWSER_BACK)
+     NotifyWindowExecuteAppCommand(kBrowserBackward);
+   else if (event.windows_key_code == ui::VKEY_BROWSER_FORWARD)
+@@ -1566,7 +1566,7 @@ void NativeWindowViews::HandleKeyboardEvent(
+   root_view_->HandleKeyEvent(event);
+ }
+ 
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void NativeWindowViews::OnMouseEvent(ui::MouseEvent* event) {
+   if (event->type() != ui::ET_MOUSE_PRESSED)
+     return;
diff --git a/devel/electron12/files/patch-electron_shell_browser_native__window__views.h b/devel/electron12/files/patch-electron_shell_browser_native__window__views.h
new file mode 100644
index 0000000000000000000000000000000000000000..52d981d93c523a58c87fd4fcd59ae783b63697ef
--- /dev/null
+++ b/devel/electron12/files/patch-electron_shell_browser_native__window__views.h
@@ -0,0 +1,20 @@
+--- electron/shell/browser/native_window_views.h.orig	2021-04-20 23:32:33 UTC
++++ electron/shell/browser/native_window_views.h
+@@ -159,7 +159,7 @@ class NativeWindowViews : public NativeWindow,
+                     LPARAM l_param,
+                     LRESULT* result);
+   void SetIcon(HICON small_icon, HICON app_icon);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+   void SetIcon(const gfx::ImageSkia& icon);
+ #endif
+ 
+@@ -219,7 +219,7 @@ class NativeWindowViews : public NativeWindow,
+       content::WebContents*,
+       const content::NativeWebKeyboardEvent& event) override;
+ 
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+   // ui::EventHandler:
+   void OnMouseEvent(ui::MouseEvent* event) override;
+ #endif
diff --git a/devel/electron11/files/patch-electron_shell_browser_osr_osr__host__display__client.cc b/devel/electron12/files/patch-electron_shell_browser_osr_osr__host__display__client.cc
similarity index 80%
rename from devel/electron11/files/patch-electron_shell_browser_osr_osr__host__display__client.cc
rename to devel/electron12/files/patch-electron_shell_browser_osr_osr__host__display__client.cc
index a19e7a0710b9b34262ed9b7106771d3b4d566a77..fd443c993a5747186eceee4c6f2347a1ed1e216c 100644
--- a/devel/electron11/files/patch-electron_shell_browser_osr_osr__host__display__client.cc
+++ b/devel/electron12/files/patch-electron_shell_browser_osr_osr__host__display__client.cc
@@ -1,6 +1,6 @@
---- electron/shell/browser/osr/osr_host_display_client.cc.orig	2021-01-22 23:55:24 UTC
+--- electron/shell/browser/osr/osr_host_display_client.cc.orig	2021-04-20 23:32:33 UTC
 +++ electron/shell/browser/osr/osr_host_display_client.cc
-@@ -101,7 +101,7 @@ void OffScreenHostDisplayClient::CreateLayeredWindowUp
+@@ -97,7 +97,7 @@ void OffScreenHostDisplayClient::CreateLayeredWindowUp
    layered_window_updater_->SetActive(active_);
  }
  
diff --git a/devel/electron11/files/patch-electron_shell_browser_osr_osr__host__display__client.h b/devel/electron12/files/patch-electron_shell_browser_osr_osr__host__display__client.h
similarity index 82%
rename from devel/electron11/files/patch-electron_shell_browser_osr_osr__host__display__client.h
rename to devel/electron12/files/patch-electron_shell_browser_osr_osr__host__display__client.h
index cf5a4a9339c5339bc43929e5390a64b61e3c0bf3..26b6a03d75e076b75870683c0a5e79df667c75c6 100644
--- a/devel/electron11/files/patch-electron_shell_browser_osr_osr__host__display__client.h
+++ b/devel/electron12/files/patch-electron_shell_browser_osr_osr__host__display__client.h
@@ -1,6 +1,6 @@
---- electron/shell/browser/osr/osr_host_display_client.h.orig	2021-01-22 23:55:24 UTC
+--- electron/shell/browser/osr/osr_host_display_client.h.orig	2021-04-20 23:32:33 UTC
 +++ electron/shell/browser/osr/osr_host_display_client.h
-@@ -66,7 +66,7 @@ class OffScreenHostDisplayClient : public viz::HostDis
+@@ -64,7 +64,7 @@ class OffScreenHostDisplayClient : public viz::HostDis
        mojo::PendingReceiver<viz::mojom::LayeredWindowUpdater> receiver)
        override;
  
diff --git a/devel/electron11/files/patch-electron_shell_browser_relauncher__linux.cc b/devel/electron12/files/patch-electron_shell_browser_relauncher__linux.cc
similarity index 100%
rename from devel/electron11/files/patch-electron_shell_browser_relauncher__linux.cc
rename to devel/electron12/files/patch-electron_shell_browser_relauncher__linux.cc
diff --git a/devel/electron12/files/patch-electron_shell_browser_ui_inspectable__web__contents__view__delegate.h b/devel/electron12/files/patch-electron_shell_browser_ui_inspectable__web__contents__view__delegate.h
new file mode 100644
index 0000000000000000000000000000000000000000..101809f3e7e68e52130997ce38e0cba9e817d0f3
--- /dev/null
+++ b/devel/electron12/files/patch-electron_shell_browser_ui_inspectable__web__contents__view__delegate.h
@@ -0,0 +1,11 @@
+--- electron/shell/browser/ui/inspectable_web_contents_view_delegate.h.orig	2021-04-22 08:40:03 UTC
++++ electron/shell/browser/ui/inspectable_web_contents_view_delegate.h
+@@ -24,7 +24,7 @@ class InspectableWebContentsViewDelegate {
+   // Returns the icon of devtools window.
+   virtual gfx::ImageSkia GetDevToolsWindowIcon();
+ 
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+   // Called when creating devtools window.
+   virtual void GetDevToolsWindowWMClass(std::string* name,
+                                         std::string* class_name) {}
diff --git a/devel/electron11/files/patch-electron_shell_browser_ui_views_electron__views__delegate.cc b/devel/electron12/files/patch-electron_shell_browser_ui_views_electron__views__delegate.cc
similarity index 100%
rename from devel/electron11/files/patch-electron_shell_browser_ui_views_electron__views__delegate.cc
rename to devel/electron12/files/patch-electron_shell_browser_ui_views_electron__views__delegate.cc
diff --git a/devel/electron11/files/patch-electron_shell_browser_ui_views_electron__views__delegate.h b/devel/electron12/files/patch-electron_shell_browser_ui_views_electron__views__delegate.h
similarity index 100%
rename from devel/electron11/files/patch-electron_shell_browser_ui_views_electron__views__delegate.h
rename to devel/electron12/files/patch-electron_shell_browser_ui_views_electron__views__delegate.h
diff --git a/devel/electron12/files/patch-electron_shell_browser_ui_views_inspectable__web__contents__view__views.cc b/devel/electron12/files/patch-electron_shell_browser_ui_views_inspectable__web__contents__view__views.cc
new file mode 100644
index 0000000000000000000000000000000000000000..1db9553ec9a4bb688079d19315896bce0ff48316
--- /dev/null
+++ b/devel/electron12/files/patch-electron_shell_browser_ui_views_inspectable__web__contents__view__views.cc
@@ -0,0 +1,11 @@
+--- electron/shell/browser/ui/views/inspectable_web_contents_view_views.cc.orig	2021-04-22 08:41:03 UTC
++++ electron/shell/browser/ui/views/inspectable_web_contents_view_views.cc
+@@ -186,7 +186,7 @@ void InspectableWebContentsViewViews::SetIsDocked(bool
+     params.delegate = devtools_window_delegate_;
+     params.bounds = inspectable_web_contents()->GetDevToolsBounds();
+ 
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+     params.wm_role_name = "devtools";
+     if (GetDelegate())
+       GetDelegate()->GetDevToolsWindowWMClass(&params.wm_class_name,
diff --git a/devel/electron12/files/patch-electron_shell_browser_ui_views_menu__bar.cc b/devel/electron12/files/patch-electron_shell_browser_ui_views_menu__bar.cc
new file mode 100644
index 0000000000000000000000000000000000000000..b970dac8497e32035250b23d447297e8a472abf7
--- /dev/null
+++ b/devel/electron12/files/patch-electron_shell_browser_ui_views_menu__bar.cc
@@ -0,0 +1,29 @@
+--- electron/shell/browser/ui/views/menu_bar.cc.orig	2021-04-22 08:42:01 UTC
++++ electron/shell/browser/ui/views/menu_bar.cc
+@@ -17,7 +17,7 @@
+ #include "ui/views/layout/box_layout.h"
+ #include "ui/views/widget/widget.h"
+ 
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/gtk/gtk_util.h"
+ #endif
+ 
+@@ -291,7 +291,7 @@ void MenuBar::ButtonPressed(int id, const ui::Event& e
+ void MenuBar::RefreshColorCache() {
+   const ui::NativeTheme* theme = GetNativeTheme();
+   if (theme) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+     background_color_ = gtk::GetBgColor("GtkMenuBar#menubar");
+     enabled_color_ =
+         gtk::GetFgColor("GtkMenuBar#menubar GtkMenuItem#menuitem GtkLabel");
+@@ -329,7 +329,7 @@ void MenuBar::UpdateViewColors() {
+   // set child colors
+   if (menu_model_ == nullptr)
+     return;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+   const auto& textColor = has_focus_ ? enabled_color_ : disabled_color_;
+   for (auto* child : GetChildrenInZOrder()) {
+     auto* button = static_cast<SubmenuButton*>(child);
diff --git a/devel/electron12/files/patch-electron_shell_browser_ui_views_menu__bar.h b/devel/electron12/files/patch-electron_shell_browser_ui_views_menu__bar.h
new file mode 100644
index 0000000000000000000000000000000000000000..44496d72586bbac58195119c149e3f0a8d99f370
--- /dev/null
+++ b/devel/electron12/files/patch-electron_shell_browser_ui_views_menu__bar.h
@@ -0,0 +1,11 @@
+--- electron/shell/browser/ui/views/menu_bar.h.orig	2021-04-22 08:43:16 UTC
++++ electron/shell/browser/ui/views/menu_bar.h
+@@ -87,7 +87,7 @@ class MenuBar : public views::AccessiblePaneView,
+ 
+   void RefreshColorCache();
+   SkColor background_color_;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+   SkColor enabled_color_;
+   SkColor disabled_color_;
+ #endif
diff --git a/devel/electron11/files/patch-electron_shell_browser_ui_views_submenu__button.cc b/devel/electron12/files/patch-electron_shell_browser_ui_views_submenu__button.cc
similarity index 58%
rename from devel/electron11/files/patch-electron_shell_browser_ui_views_submenu__button.cc
rename to devel/electron12/files/patch-electron_shell_browser_ui_views_submenu__button.cc
index dc9019917aa42e404863f89879f83931e9842c56..7eca7a132985bef0bcfcbab1aa326aa188630037 100644
--- a/devel/electron11/files/patch-electron_shell_browser_ui_views_submenu__button.cc
+++ b/devel/electron12/files/patch-electron_shell_browser_ui_views_submenu__button.cc
@@ -1,8 +1,8 @@
---- electron/shell/browser/ui/views/submenu_button.cc.orig	2021-01-22 23:55:24 UTC
+--- electron/shell/browser/ui/views/submenu_button.cc.orig	2021-04-20 23:32:33 UTC
 +++ electron/shell/browser/ui/views/submenu_button.cc
-@@ -27,7 +27,7 @@ SubmenuButton::SubmenuButton(views::ButtonListener* bu
-           button_listener,
-           gfx::RemoveAcceleratorChar(title, '&', nullptr, nullptr)),
+@@ -25,7 +25,7 @@ SubmenuButton::SubmenuButton(PressedCallback callback,
+                              const SkColor& background_color)
+     : views::MenuButton(callback, gfx::RemoveAccelerator(title)),
        background_color_(background_color) {
 -#if defined(OS_LINUX)
 +#if defined(OS_LINUX) || defined(OS_BSD)
diff --git a/devel/electron11/files/patch-electron_shell_common_api_electron__api__native__image.cc b/devel/electron12/files/patch-electron_shell_common_api_electron__api__native__image.cc
similarity index 85%
rename from devel/electron11/files/patch-electron_shell_common_api_electron__api__native__image.cc
rename to devel/electron12/files/patch-electron_shell_common_api_electron__api__native__image.cc
index 9e107a8333a765bbf2212526d3a1849d81eabb20..b2586196ad693c9e84a8629df82b792a45825d22 100644
--- a/devel/electron11/files/patch-electron_shell_common_api_electron__api__native__image.cc
+++ b/devel/electron12/files/patch-electron_shell_common_api_electron__api__native__image.cc
@@ -1,6 +1,6 @@
---- electron/shell/common/api/electron_api_native_image.cc.orig	2021-02-02 17:38:53 UTC
+--- electron/shell/common/api/electron_api_native_image.cc.orig	2021-04-20 23:32:33 UTC
 +++ electron/shell/common/api/electron_api_native_image.cc
-@@ -630,7 +630,7 @@ void Initialize(v8::Local<v8::Object> exports,
+@@ -643,7 +643,7 @@ void Initialize(v8::Local<v8::Object> exports,
    native_image.SetMethod("createFromDataURL", &NativeImage::CreateFromDataURL);
    native_image.SetMethod("createFromNamedImage",
                           &NativeImage::CreateFromNamedImage);
diff --git a/devel/electron11/files/patch-electron_shell_common_api_electron__api__native__image.h b/devel/electron12/files/patch-electron_shell_common_api_electron__api__native__image.h
similarity index 100%
rename from devel/electron11/files/patch-electron_shell_common_api_electron__api__native__image.h
rename to devel/electron12/files/patch-electron_shell_common_api_electron__api__native__image.h
diff --git a/devel/electron11/files/patch-electron_shell_common_api_electron__bindings.cc b/devel/electron12/files/patch-electron_shell_common_api_electron__bindings.cc
similarity index 75%
rename from devel/electron11/files/patch-electron_shell_common_api_electron__bindings.cc
rename to devel/electron12/files/patch-electron_shell_common_api_electron__bindings.cc
index 7667c8fa4d819aabfff1f33cbe471956a04eabde..9a97341995a2d899d25c224acf14f65c79044243 100644
--- a/devel/electron11/files/patch-electron_shell_common_api_electron__bindings.cc
+++ b/devel/electron12/files/patch-electron_shell_common_api_electron__bindings.cc
@@ -1,6 +1,6 @@
---- electron/shell/common/api/electron_bindings.cc.orig	2021-01-22 23:55:24 UTC
+--- electron/shell/common/api/electron_bindings.cc.orig	2021-04-20 23:32:33 UTC
 +++ electron/shell/common/api/electron_bindings.cc
-@@ -269,7 +269,7 @@ void ElectronBindings::DidReceiveMemoryDump(
+@@ -262,7 +262,7 @@ void ElectronBindings::DidReceiveMemoryDump(
      if (base::GetCurrentProcId() == dump.pid()) {
        gin_helper::Dictionary dict = gin::Dictionary::CreateEmpty(isolate);
        const auto& osdump = dump.os_dump();
diff --git a/devel/electron11/files/patch-electron_shell_common_electron__command__line.cc b/devel/electron12/files/patch-electron_shell_common_electron__command__line.cc
similarity index 100%
rename from devel/electron11/files/patch-electron_shell_common_electron__command__line.cc
rename to devel/electron12/files/patch-electron_shell_common_electron__command__line.cc
diff --git a/devel/electron11/files/patch-electron_shell_common_electron__command__line.h b/devel/electron12/files/patch-electron_shell_common_electron__command__line.h
similarity index 100%
rename from devel/electron11/files/patch-electron_shell_common_electron__command__line.h
rename to devel/electron12/files/patch-electron_shell_common_electron__command__line.h
diff --git a/devel/electron11/files/patch-electron_shell_common_electron__paths.h b/devel/electron12/files/patch-electron_shell_common_electron__paths.h
similarity index 100%
rename from devel/electron11/files/patch-electron_shell_common_electron__paths.h
rename to devel/electron12/files/patch-electron_shell_common_electron__paths.h
diff --git a/devel/electron11/files/patch-electron_shell_common_node__bindings.cc b/devel/electron12/files/patch-electron_shell_common_node__bindings.cc
similarity index 81%
rename from devel/electron11/files/patch-electron_shell_common_node__bindings.cc
rename to devel/electron12/files/patch-electron_shell_common_node__bindings.cc
index b0e0817c11debd12965a996b3c568db29af3f739..af1564b8681c097843292dc6f48b7210b89fb1cf 100644
--- a/devel/electron11/files/patch-electron_shell_common_node__bindings.cc
+++ b/devel/electron12/files/patch-electron_shell_common_node__bindings.cc
@@ -1,4 +1,4 @@
---- electron/shell/common/node_bindings.cc.orig	2021-01-22 23:55:24 UTC
+--- electron/shell/common/node_bindings.cc.orig	2021-04-20 23:32:33 UTC
 +++ electron/shell/common/node_bindings.cc
 @@ -35,7 +35,7 @@
  #include "shell/common/node_includes.h"
@@ -9,7 +9,7 @@
  #include "shell/common/crash_keys.h"
  #endif
  
-@@ -143,7 +143,7 @@ bool IsPackagedApp() {
+@@ -146,7 +146,7 @@ bool IsPackagedApp() {
  void V8FatalErrorCallback(const char* location, const char* message) {
    LOG(ERROR) << "Fatal error in V8: " << location << " " << message;
  
@@ -18,12 +18,12 @@
    electron::crash_keys::SetCrashKey("electron.v8-fatal.message", message);
    electron::crash_keys::SetCrashKey("electron.v8-fatal.location", location);
  #endif
-@@ -360,7 +360,7 @@ void NodeBindings::Initialize() {
+@@ -351,7 +351,7 @@ void NodeBindings::Initialize() {
    // Open node's error reporting system for browser process.
    node::g_upstream_node_mode = false;
  
 -#if defined(OS_LINUX)
 +#if defined(OS_LINUX) || defined(OS_BSD)
    // Get real command line in renderer process forked by zygote.
-   if (browser_env_ != BrowserEnvironment::BROWSER)
+   if (browser_env_ != BrowserEnvironment::kBrowser)
      ElectronCommandLine::InitializeFromCommandLine();
diff --git a/devel/electron11/files/patch-electron_shell_common_node__bindings__linux.cc b/devel/electron12/files/patch-electron_shell_common_node__bindings__linux.cc
similarity index 100%
rename from devel/electron11/files/patch-electron_shell_common_node__bindings__linux.cc
rename to devel/electron12/files/patch-electron_shell_common_node__bindings__linux.cc
diff --git a/devel/electron11/files/patch-electron_shell_common_platform__util.h b/devel/electron12/files/patch-electron_shell_common_platform__util.h
similarity index 72%
rename from devel/electron11/files/patch-electron_shell_common_platform__util.h
rename to devel/electron12/files/patch-electron_shell_common_platform__util.h
index aafcd285a5016f69772b0c8f3ea5aa6c05e8c211..286260e8197e7823aab1c2c81347b058d44b1204 100644
--- a/devel/electron11/files/patch-electron_shell_common_platform__util.h
+++ b/devel/electron12/files/patch-electron_shell_common_platform__util.h
@@ -1,6 +1,6 @@
---- electron/shell/common/platform_util.h.orig	2021-01-22 23:55:24 UTC
+--- electron/shell/common/platform_util.h.orig	2021-04-20 23:32:33 UTC
 +++ electron/shell/common/platform_util.h
-@@ -55,7 +55,7 @@ bool GetLoginItemEnabled();
+@@ -59,7 +59,7 @@ bool GetLoginItemEnabled();
  bool SetLoginItemEnabled(bool enabled);
  #endif
  
diff --git a/devel/electron11/files/patch-electron_shell_renderer_api_electron__api__crash__reporter__renderer.cc b/devel/electron12/files/patch-electron_shell_renderer_api_electron__api__crash__reporter__renderer.cc
similarity index 100%
rename from devel/electron11/files/patch-electron_shell_renderer_api_electron__api__crash__reporter__renderer.cc
rename to devel/electron12/files/patch-electron_shell_renderer_api_electron__api__crash__reporter__renderer.cc
diff --git a/devel/electron11/files/patch-electron_spec-main_api-app-spec.ts b/devel/electron12/files/patch-electron_spec-main_api-app-spec.ts
similarity index 85%
rename from devel/electron11/files/patch-electron_spec-main_api-app-spec.ts
rename to devel/electron12/files/patch-electron_spec-main_api-app-spec.ts
index 9fa0719947eb7e91da06f230492f7676a1749eac..0871cbf91039913ff1399c12caba917c95159f4d 100644
--- a/devel/electron11/files/patch-electron_spec-main_api-app-spec.ts
+++ b/devel/electron12/files/patch-electron_spec-main_api-app-spec.ts
@@ -1,4 +1,4 @@
---- electron/spec-main/api-app-spec.ts.orig	2021-01-22 23:55:24 UTC
+--- electron/spec-main/api-app-spec.ts.orig	2021-04-20 23:32:33 UTC
 +++ electron/spec-main/api-app-spec.ts
 @@ -123,7 +123,7 @@ describe('app module', () => {
    describe('app.getLocaleCountryCode()', () => {
@@ -27,16 +27,16 @@
    //       this.skip()
    //     }
    //   })
-@@ -550,7 +550,7 @@ describe('app module', () => {
+@@ -558,7 +558,7 @@ describe('app module', () => {
    describe('app.badgeCount', () => {
      const platformIsNotSupported =
          (process.platform === 'win32') ||
 -        (process.platform === 'linux' && !app.isUnityRunning());
-+        ((process.platform === 'linux' || process.platform === 'freebsd') && !app.isUnityRunning());
-     const platformIsSupported = !platformIsNotSupported;
++	((process.platform === 'linux' || process.platform === 'freebsd') && !app.isUnityRunning());
  
      const expectedBadgeCount = 42;
-@@ -616,7 +616,7 @@ describe('app module', () => {
+ 
+@@ -620,7 +620,7 @@ describe('app module', () => {
      ];
  
      before(function () {
@@ -45,7 +45,7 @@
      });
  
      beforeEach(() => {
-@@ -919,7 +919,7 @@ describe('app module', () => {
+@@ -923,7 +923,7 @@ describe('app module', () => {
      });
    });
  
@@ -54,7 +54,7 @@
      it('with properties', () => {
        it('can set accessibility support enabled', () => {
          expect(app.accessibilitySupportEnabled).to.eql(false);
-@@ -1033,7 +1033,7 @@ describe('app module', () => {
+@@ -1037,7 +1037,7 @@ describe('app module', () => {
      let w: BrowserWindow;
  
      before(function () {
@@ -63,7 +63,7 @@
          this.skip();
        }
        session.fromPartition('empty-certificate').setCertificateVerifyProc((req, cb) => { cb(0); });
-@@ -1174,7 +1174,7 @@ describe('app module', () => {
+@@ -1178,7 +1178,7 @@ describe('app module', () => {
        // We can't expect particular app names here, but these protocols should
        // at least have _something_ registered. Except on our Linux CI
        // environment apparently.
@@ -72,7 +72,7 @@
          this.skip();
        }
  
-@@ -1192,7 +1192,7 @@ describe('app module', () => {
+@@ -1196,7 +1196,7 @@ describe('app module', () => {
      });
    });
  
@@ -81,7 +81,7 @@
      it('returns promise rejection for a bogus protocol', async function () {
        await expect(
          app.getApplicationInfoForProtocol('bogus-protocol://')
-@@ -1248,7 +1248,7 @@ describe('app module', () => {
+@@ -1252,7 +1252,7 @@ describe('app module', () => {
    });
  
    // FIXME Get these specs running on Linux CI
@@ -90,7 +90,7 @@
      const iconPath = path.join(__dirname, 'fixtures/assets/icon.ico');
      const sizes = {
        small: 16,
-@@ -1325,7 +1325,7 @@ describe('app module', () => {
+@@ -1333,7 +1333,7 @@ describe('app module', () => {
            expect(entry.memory).to.have.property('privateBytes').that.is.greaterThan(0);
          }
  
@@ -99,7 +99,7 @@
            expect(entry.sandboxed).to.be.a('boolean');
          }
  
-@@ -1351,7 +1351,7 @@ describe('app module', () => {
+@@ -1359,7 +1359,7 @@ describe('app module', () => {
    });
  
    // FIXME https://github.com/electron/electron/issues/24224
@@ -108,7 +108,7 @@
      const appPath = path.join(fixturesPath, 'api', 'gpu-info.js');
  
      const getGPUInfo = async (type: string) => {
-@@ -1393,7 +1393,7 @@ describe('app module', () => {
+@@ -1401,7 +1401,7 @@ describe('app module', () => {
  
      it('succeeds with complete GPUInfo', async () => {
        const completeInfo = await getGPUInfo('complete');
@@ -117,7 +117,7 @@
          // For linux and macOS complete info is same as basic info
          await verifyBasicGPUInfo(completeInfo);
          const basicInfo = await getGPUInfo('basic');
-@@ -1423,7 +1423,7 @@ describe('app module', () => {
+@@ -1431,7 +1431,7 @@ describe('app module', () => {
      const socketPath = process.platform === 'win32' ? '\\\\.\\pipe\\electron-mixed-sandbox' : '/tmp/electron-mixed-sandbox';
  
      beforeEach(function (done) {
diff --git a/devel/electron11/files/patch-electron_spec-main_api-browser-window-spec.ts b/devel/electron12/files/patch-electron_spec-main_api-browser-window-spec.ts
similarity index 86%
rename from devel/electron11/files/patch-electron_spec-main_api-browser-window-spec.ts
rename to devel/electron12/files/patch-electron_spec-main_api-browser-window-spec.ts
index 4ad63a7e997109a03638dae23146c5e97274dcc8..ec4235cec755fee62675aceebf331599eaf5486a 100644
--- a/devel/electron11/files/patch-electron_spec-main_api-browser-window-spec.ts
+++ b/devel/electron12/files/patch-electron_spec-main_api-browser-window-spec.ts
@@ -1,4 +1,4 @@
---- electron/spec-main/api-browser-window-spec.ts.orig	2021-03-23 15:10:33 UTC
+--- electron/spec-main/api-browser-window-spec.ts.orig	2021-05-07 09:22:40 UTC
 +++ electron/spec-main/api-browser-window-spec.ts
 @@ -57,7 +57,7 @@ describe('BrowserWindow module', () => {
        }).not.to.throw();
@@ -9,7 +9,7 @@
        const appPath = path.join(__dirname, 'spec-main', 'fixtures', 'apps', 'xwindow-icon');
        const appProcess = childProcess.spawn(process.execPath, [appPath]);
        await new Promise((resolve) => { appProcess.once('exit', resolve); });
-@@ -1036,7 +1036,7 @@ describe('BrowserWindow module', () => {
+@@ -1041,7 +1041,7 @@ describe('BrowserWindow module', () => {
          });
        });
  
@@ -18,7 +18,7 @@
          it('checks normal bounds when maximized', async () => {
            const bounds = w.getBounds();
            const maximize = emittedOnce(w, 'maximize');
-@@ -1097,7 +1097,7 @@ describe('BrowserWindow module', () => {
+@@ -1102,7 +1102,7 @@ describe('BrowserWindow module', () => {
          });
        });
  
@@ -27,7 +27,7 @@
          it('checks normal bounds when minimized', async () => {
            const bounds = w.getBounds();
            const minimize = emittedOnce(w, 'minimize');
-@@ -1685,7 +1685,7 @@ describe('BrowserWindow module', () => {
+@@ -1730,7 +1730,7 @@ describe('BrowserWindow module', () => {
    describe('BrowserWindow.setOpacity(opacity)', () => {
      afterEach(closeAllWindows);
  
@@ -36,7 +36,7 @@
        it('make window with initial opacity', () => {
          const w = new BrowserWindow({ show: false, opacity: 0.5 });
          expect(w.getOpacity()).to.equal(0.5);
-@@ -1711,7 +1711,7 @@ describe('BrowserWindow module', () => {
+@@ -1756,7 +1756,7 @@ describe('BrowserWindow module', () => {
        });
      });
  
@@ -45,7 +45,7 @@
        it('sets 1 regardless of parameter', () => {
          const w = new BrowserWindow({ show: false });
          w.setOpacity(0);
-@@ -2547,7 +2547,7 @@ describe('BrowserWindow module', () => {
+@@ -2613,7 +2613,7 @@ describe('BrowserWindow module', () => {
          expect(test.version).to.equal(process.version);
          expect(test.versions).to.deep.equal(process.versions);
  
@@ -54,7 +54,7 @@
            expect(test.creationTime).to.be.null('creation time');
            expect(test.systemMemoryInfo).to.be.null('system memory info');
          } else {
-@@ -3073,7 +3073,7 @@ describe('BrowserWindow module', () => {
+@@ -3206,7 +3206,7 @@ describe('BrowserWindow module', () => {
      });
    });
  
@@ -63,7 +63,7 @@
      afterEach(closeAllWindows);
      it('emits an event when window is maximized', async () => {
        const w = new BrowserWindow({ show: false });
-@@ -3651,7 +3651,7 @@ describe('BrowserWindow module', () => {
+@@ -3784,7 +3784,7 @@ describe('BrowserWindow module', () => {
      });
    });
  
diff --git a/devel/electron11/files/patch-electron_spec-main_api-crash-reporter-spec.ts b/devel/electron12/files/patch-electron_spec-main_api-crash-reporter-spec.ts
similarity index 95%
rename from devel/electron11/files/patch-electron_spec-main_api-crash-reporter-spec.ts
rename to devel/electron12/files/patch-electron_spec-main_api-crash-reporter-spec.ts
index ff6ce49d999fa246667b8b5fcaa9d5bbe2b093d5..8a228c9a06a250ab02af89265b300655ab791c2f 100644
--- a/devel/electron11/files/patch-electron_spec-main_api-crash-reporter-spec.ts
+++ b/devel/electron12/files/patch-electron_spec-main_api-crash-reporter-spec.ts
@@ -1,4 +1,4 @@
---- electron/spec-main/api-crash-reporter-spec.ts.orig	2021-01-22 23:55:24 UTC
+--- electron/spec-main/api-crash-reporter-spec.ts.orig	2021-04-20 23:32:33 UTC
 +++ electron/spec-main/api-crash-reporter-spec.ts
 @@ -12,7 +12,7 @@ import * as fs from 'fs';
  import * as uuid from 'uuid';
@@ -18,7 +18,7 @@
      expect(fields.upload_file_minidump.length).to.be.greaterThan(0);
    }
  }
-@@ -486,7 +486,7 @@ ifdescribe(!isLinuxOnArm && !process.mas && !process.e
+@@ -490,7 +490,7 @@ ifdescribe(!isLinuxOnArm && !process.mas && !process.e
          await bw.webContents.executeJavaScript('require(\'electron\').crashReporter.addExtraParameter(\'hello\', \'world\')');
          return bw.webContents.executeJavaScript('require(\'electron\').crashReporter.getParameters()');
        });
diff --git a/devel/electron11/files/patch-electron_spec-main_api-desktop-capturer-spec.ts b/devel/electron12/files/patch-electron_spec-main_api-desktop-capturer-spec.ts
similarity index 100%
rename from devel/electron11/files/patch-electron_spec-main_api-desktop-capturer-spec.ts
rename to devel/electron12/files/patch-electron_spec-main_api-desktop-capturer-spec.ts
diff --git a/devel/electron11/files/patch-electron_spec-main_api-net-log-spec.ts b/devel/electron12/files/patch-electron_spec-main_api-net-log-spec.ts
similarity index 100%
rename from devel/electron11/files/patch-electron_spec-main_api-net-log-spec.ts
rename to devel/electron12/files/patch-electron_spec-main_api-net-log-spec.ts
diff --git a/devel/electron11/files/patch-electron_spec-main_api-notification-dbus-spec.ts b/devel/electron12/files/patch-electron_spec-main_api-notification-dbus-spec.ts
similarity index 100%
rename from devel/electron11/files/patch-electron_spec-main_api-notification-dbus-spec.ts
rename to devel/electron12/files/patch-electron_spec-main_api-notification-dbus-spec.ts
diff --git a/devel/electron11/files/patch-electron_spec-main_api-power-monitor-spec.ts b/devel/electron12/files/patch-electron_spec-main_api-power-monitor-spec.ts
similarity index 100%
rename from devel/electron11/files/patch-electron_spec-main_api-power-monitor-spec.ts
rename to devel/electron12/files/patch-electron_spec-main_api-power-monitor-spec.ts
diff --git a/devel/electron11/files/patch-electron_spec-main_api-screen-spec.ts b/devel/electron12/files/patch-electron_spec-main_api-screen-spec.ts
similarity index 86%
rename from devel/electron11/files/patch-electron_spec-main_api-screen-spec.ts
rename to devel/electron12/files/patch-electron_spec-main_api-screen-spec.ts
index af5c392f37cec4b56f652389bbc4b6b58ba5b2ea..4bdd3ef895636743105607e4af03b8ea2fbdd9ab 100644
--- a/devel/electron11/files/patch-electron_spec-main_api-screen-spec.ts
+++ b/devel/electron12/files/patch-electron_spec-main_api-screen-spec.ts
@@ -1,4 +1,4 @@
---- electron/spec-main/api-screen-spec.ts.orig	2021-01-22 23:55:24 UTC
+--- electron/spec-main/api-screen-spec.ts.orig	2021-04-20 23:32:33 UTC
 +++ electron/spec-main/api-screen-spec.ts
 @@ -29,7 +29,7 @@ describe('screen module', () => {
      });
@@ -9,7 +9,7 @@
        const display = screen.getPrimaryDisplay();
  
        expect(display).to.have.property('scaleFactor').that.is.a('number');
-@@ -45,7 +45,7 @@ describe('screen module', () => {
+@@ -46,7 +46,7 @@ describe('screen module', () => {
      });
  
      it('has a size object property', function () {
@@ -18,7 +18,7 @@
        const display = screen.getPrimaryDisplay();
  
        expect(display).to.have.property('size').that.is.an('object');
-@@ -55,7 +55,7 @@ describe('screen module', () => {
+@@ -56,7 +56,7 @@ describe('screen module', () => {
      });
  
      it('has a workAreaSize object property', function () {
@@ -27,7 +27,7 @@
        const display = screen.getPrimaryDisplay();
  
        expect(display).to.have.property('workAreaSize').that.is.an('object');
-@@ -65,7 +65,7 @@ describe('screen module', () => {
+@@ -66,7 +66,7 @@ describe('screen module', () => {
      });
  
      it('has a bounds object property', function () {
diff --git a/devel/electron11/files/patch-electron_spec-main_api-shell-spec.ts b/devel/electron12/files/patch-electron_spec-main_api-shell-spec.ts
similarity index 100%
rename from devel/electron11/files/patch-electron_spec-main_api-shell-spec.ts
rename to devel/electron12/files/patch-electron_spec-main_api-shell-spec.ts
diff --git a/devel/electron11/files/patch-electron_spec-main_api-subframe-spec.ts b/devel/electron12/files/patch-electron_spec-main_api-subframe-spec.ts
similarity index 75%
rename from devel/electron11/files/patch-electron_spec-main_api-subframe-spec.ts
rename to devel/electron12/files/patch-electron_spec-main_api-subframe-spec.ts
index 93ac7c6fa52a33f866f3635a8699291188361081..aa620c9db2929bbd8836a19693c5c208aaf76b3d 100644
--- a/devel/electron11/files/patch-electron_spec-main_api-subframe-spec.ts
+++ b/devel/electron12/files/patch-electron_spec-main_api-subframe-spec.ts
@@ -1,6 +1,6 @@
---- electron/spec-main/api-subframe-spec.ts.orig	2021-01-22 23:55:24 UTC
+--- electron/spec-main/api-subframe-spec.ts.orig	2021-04-20 23:32:33 UTC
 +++ electron/spec-main/api-subframe-spec.ts
-@@ -177,7 +177,7 @@ describe('renderer nodeIntegrationInSubFrames', () => 
+@@ -213,7 +213,7 @@ describe('renderer nodeIntegrationInSubFrames', () => 
  });
  
  // app.getAppMetrics() does not return sandbox information on Linux.
diff --git a/devel/electron11/files/patch-electron_spec-main_api-tray-spec.ts b/devel/electron12/files/patch-electron_spec-main_api-tray-spec.ts
similarity index 100%
rename from devel/electron11/files/patch-electron_spec-main_api-tray-spec.ts
rename to devel/electron12/files/patch-electron_spec-main_api-tray-spec.ts
diff --git a/devel/electron11/files/patch-electron_spec-main_api-web-contents-spec.ts b/devel/electron12/files/patch-electron_spec-main_api-web-contents-spec.ts
similarity index 100%
rename from devel/electron11/files/patch-electron_spec-main_api-web-contents-spec.ts
rename to devel/electron12/files/patch-electron_spec-main_api-web-contents-spec.ts
diff --git a/devel/electron11/files/patch-electron_spec-main_chromium-spec.ts b/devel/electron12/files/patch-electron_spec-main_chromium-spec.ts
similarity index 63%
rename from devel/electron11/files/patch-electron_spec-main_chromium-spec.ts
rename to devel/electron12/files/patch-electron_spec-main_chromium-spec.ts
index 0a270776284b27d9e46f3cbc9f50c6b15660bf8f..3b533d7610693d7a4fb5b21550f1bd256b9f3302 100644
--- a/devel/electron11/files/patch-electron_spec-main_chromium-spec.ts
+++ b/devel/electron12/files/patch-electron_spec-main_chromium-spec.ts
@@ -1,6 +1,6 @@
---- electron/spec-main/chromium-spec.ts.orig	2021-04-13 20:38:27 UTC
+--- electron/spec-main/chromium-spec.ts.orig	2021-04-20 23:32:33 UTC
 +++ electron/spec-main/chromium-spec.ts
-@@ -392,13 +392,13 @@ describe('command line switches', () => {
+@@ -397,13 +397,13 @@ describe('command line switches', () => {
      it('should not set an invalid locale', async () => testLocale('asdfkl', currentLocale));
  
      const lcAll = String(process.env.LC_ALL);
@@ -18,12 +18,14 @@
    });
  
    describe('--remote-debugging-pipe switch', () => {
-@@ -1455,10 +1455,10 @@ describe('font fallback', () => {
-     const fonts = await getRenderedFonts(html);
-     expect(fonts).to.be.an('array');
-     expect(fonts).to.have.length(1);
--    if (process.platform === 'win32') { expect(fonts[0].familyName).to.equal('Arial'); } else if (process.platform === 'darwin') { expect(fonts[0].familyName).to.equal('Helvetica'); } else if (process.platform === 'linux') { expect(fonts[0].familyName).to.equal('DejaVu Sans'); } // I think this depends on the distro? We don't specify a default.
-+    if (process.platform === 'win32') { expect(fonts[0].familyName).to.equal('Arial'); } else if (process.platform === 'darwin') { expect(fonts[0].familyName).to.equal('Helvetica'); } else if (process.platform === 'linux' || process.platform === 'freebsd') { expect(fonts[0].familyName).to.equal('DejaVu Sans'); } // I think this depends on the distro? We don't specify a default.
+@@ -1453,12 +1453,12 @@ describe('font fallback', () => {
+       expect(fonts[0].familyName).to.equal('Arial');
+     } else if (process.platform === 'darwin') {
+       expect(fonts[0].familyName).to.equal('Helvetica');
+-    } else if (process.platform === 'linux') {
++    } else if (process.platform === 'linux' || process.platform === 'freebsd') {
+       expect(fonts[0].familyName).to.equal('DejaVu Sans');
+     } // I think this depends on the distro? We don't specify a default.
    });
  
 -  ifit(process.platform !== 'linux')('should fall back to Japanese font for sans-serif Japanese script', async function () {
@@ -31,3 +33,12 @@
      const html = `
      <html lang="ja-JP">
        <head>
+@@ -1659,7 +1659,7 @@ describe('navigator.clipboard', () => {
+   });
+ });
+ 
+-ifdescribe((process.platform !== 'linux' || app.isUnityRunning()))('navigator.setAppBadge/clearAppBadge', () => {
++ifdescribe(((process.platform !== 'linux' && process.platform !== 'freebsd') || app.isUnityRunning()))('navigator.setAppBadge/clearAppBadge', () => {
+   let w: BrowserWindow;
+ 
+   const expectedBadgeCount = 42;
diff --git a/devel/electron11/files/patch-electron_spec-main_fixtures_apps_crash_node-crash.js b/devel/electron12/files/patch-electron_spec-main_fixtures_apps_crash_node-crash.js
similarity index 100%
rename from devel/electron11/files/patch-electron_spec-main_fixtures_apps_crash_node-crash.js
rename to devel/electron12/files/patch-electron_spec-main_fixtures_apps_crash_node-crash.js
diff --git a/devel/electron11/files/patch-electron_spec-main_fixtures_native-addon_uv-dlopen_index.js b/devel/electron12/files/patch-electron_spec-main_fixtures_native-addon_uv-dlopen_index.js
similarity index 100%
rename from devel/electron11/files/patch-electron_spec-main_fixtures_native-addon_uv-dlopen_index.js
rename to devel/electron12/files/patch-electron_spec-main_fixtures_native-addon_uv-dlopen_index.js
diff --git a/devel/electron11/files/patch-electron_spec-main_version-bump-spec.ts b/devel/electron12/files/patch-electron_spec-main_version-bump-spec.ts
similarity index 100%
rename from devel/electron11/files/patch-electron_spec-main_version-bump-spec.ts
rename to devel/electron12/files/patch-electron_spec-main_version-bump-spec.ts
diff --git a/devel/electron11/files/patch-electron_spec-main_visibility-state-spec.ts b/devel/electron12/files/patch-electron_spec-main_visibility-state-spec.ts
similarity index 100%
rename from devel/electron11/files/patch-electron_spec-main_visibility-state-spec.ts
rename to devel/electron12/files/patch-electron_spec-main_visibility-state-spec.ts
diff --git a/devel/electron11/files/patch-electron_spec_api-clipboard-spec.js b/devel/electron12/files/patch-electron_spec_api-clipboard-spec.js
similarity index 100%
rename from devel/electron11/files/patch-electron_spec_api-clipboard-spec.js
rename to devel/electron12/files/patch-electron_spec_api-clipboard-spec.js
diff --git a/devel/electron11/files/patch-electron_spec_api-native-image-spec.js b/devel/electron12/files/patch-electron_spec_api-native-image-spec.js
similarity index 100%
rename from devel/electron11/files/patch-electron_spec_api-native-image-spec.js
rename to devel/electron12/files/patch-electron_spec_api-native-image-spec.js
diff --git a/devel/electron11/files/patch-electron_spec_api-process-spec.js b/devel/electron12/files/patch-electron_spec_api-process-spec.js
similarity index 100%
rename from devel/electron11/files/patch-electron_spec_api-process-spec.js
rename to devel/electron12/files/patch-electron_spec_api-process-spec.js
diff --git a/devel/electron11/files/patch-electron_spec_chromium-spec.js b/devel/electron12/files/patch-electron_spec_chromium-spec.js
similarity index 71%
rename from devel/electron11/files/patch-electron_spec_chromium-spec.js
rename to devel/electron12/files/patch-electron_spec_chromium-spec.js
index 1476e7e943a5a6edac2c384d2fd4a178580161ab..9408572e0bcad8db3844cca381ec468d0511e144 100644
--- a/devel/electron11/files/patch-electron_spec_chromium-spec.js
+++ b/devel/electron12/files/patch-electron_spec_chromium-spec.js
@@ -1,6 +1,6 @@
---- electron/spec/chromium-spec.js.orig	2021-01-22 23:55:24 UTC
+--- electron/spec/chromium-spec.js.orig	2021-04-20 23:32:33 UTC
 +++ electron/spec/chromium-spec.js
-@@ -226,7 +226,7 @@ describe('chromium feature', () => {
+@@ -234,7 +234,7 @@ describe('chromium feature', () => {
      });
  
      it('can be get as context in canvas', () => {
diff --git a/devel/electron11/files/patch-electron_spec_node-spec.js b/devel/electron12/files/patch-electron_spec_node-spec.js
similarity index 100%
rename from devel/electron11/files/patch-electron_spec_node-spec.js
rename to devel/electron12/files/patch-electron_spec_node-spec.js
diff --git a/devel/electron11/files/patch-extensions_browser_api_declarative__webrequest_webrequest__action.cc b/devel/electron12/files/patch-extensions_browser_api_declarative__webrequest_webrequest__action.cc
similarity index 100%
rename from devel/electron11/files/patch-extensions_browser_api_declarative__webrequest_webrequest__action.cc
rename to devel/electron12/files/patch-extensions_browser_api_declarative__webrequest_webrequest__action.cc
diff --git a/devel/electron11/files/patch-extensions_browser_api_messaging_message__service.cc b/devel/electron12/files/patch-extensions_browser_api_messaging_message__service.cc
similarity index 100%
rename from devel/electron11/files/patch-extensions_browser_api_messaging_message__service.cc
rename to devel/electron12/files/patch-extensions_browser_api_messaging_message__service.cc
diff --git a/devel/electron11/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc b/devel/electron12/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc
similarity index 59%
rename from devel/electron11/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc
rename to devel/electron12/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc
index 7985eb5bfb9d64b098137491d3e17522e6d8b96d..084f1ee545414f847d6ac6baea99d6650575cd58 100644
--- a/devel/electron11/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc
+++ b/devel/electron12/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc
@@ -1,20 +1,20 @@
---- extensions/browser/api/networking_private/networking_private_delegate_factory.cc.orig	2021-01-07 00:36:34 UTC
+--- extensions/browser/api/networking_private/networking_private_delegate_factory.cc.orig	2021-04-14 01:08:49 UTC
 +++ extensions/browser/api/networking_private/networking_private_delegate_factory.cc
-@@ -11,7 +11,7 @@
+@@ -12,7 +12,7 @@
  
- #if defined(OS_CHROMEOS)
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
  #include "extensions/browser/api/networking_private/networking_private_chromeos.h"
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
  #include "extensions/browser/api/networking_private/networking_private_linux.h"
  #elif defined(OS_WIN) || defined(OS_MAC)
  #include "components/wifi/wifi_service.h"
-@@ -61,7 +61,7 @@ KeyedService* NetworkingPrivateDelegateFactory::BuildS
+@@ -62,7 +62,7 @@ KeyedService* NetworkingPrivateDelegateFactory::BuildS
    NetworkingPrivateDelegate* delegate;
- #if defined(OS_CHROMEOS)
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
    delegate = new NetworkingPrivateChromeOS(browser_context);
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
    delegate = new NetworkingPrivateLinux();
  #elif defined(OS_WIN) || defined(OS_MAC)
    std::unique_ptr<wifi::WiFiService> wifi_service(wifi::WiFiService::Create());
diff --git a/devel/electron11/files/patch-extensions_browser_api_web__request_form__data__parser.cc b/devel/electron12/files/patch-extensions_browser_api_web__request_form__data__parser.cc
similarity index 100%
rename from devel/electron11/files/patch-extensions_browser_api_web__request_form__data__parser.cc
rename to devel/electron12/files/patch-extensions_browser_api_web__request_form__data__parser.cc
diff --git a/devel/electron11/files/patch-extensions_browser_browser__context__keyed__service__factories.cc b/devel/electron12/files/patch-extensions_browser_browser__context__keyed__service__factories.cc
similarity index 64%
rename from devel/electron11/files/patch-extensions_browser_browser__context__keyed__service__factories.cc
rename to devel/electron12/files/patch-extensions_browser_browser__context__keyed__service__factories.cc
index 9eaf0caf356c9caa9cd2474e144360e0d04d7140..f2c949bd328fe98fe3fa6ffb9218eb63f758689a 100644
--- a/devel/electron11/files/patch-extensions_browser_browser__context__keyed__service__factories.cc
+++ b/devel/electron12/files/patch-extensions_browser_browser__context__keyed__service__factories.cc
@@ -1,9 +1,9 @@
---- extensions/browser/browser_context_keyed_service_factories.cc.orig	2021-01-07 00:36:35 UTC
+--- extensions/browser/browser_context_keyed_service_factories.cc.orig	2021-04-14 01:08:49 UTC
 +++ extensions/browser/browser_context_keyed_service_factories.cc
-@@ -96,7 +96,7 @@ void EnsureBrowserContextKeyedServiceFactoriesBuilt() 
- #if defined(OS_CHROMEOS)
-   NetworkingConfigServiceFactory::GetInstance();
- #endif
+@@ -88,7 +88,7 @@ void EnsureBrowserContextKeyedServiceFactoriesBuilt() 
+   HidDeviceManager::GetFactoryInstance();
+   IdleManagerFactory::GetInstance();
+   ManagementAPI::GetFactoryInstance();
 -#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN) || \
 +#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN) || defined(OS_BSD) || \
      defined(OS_MAC)
diff --git a/devel/electron11/files/patch-extensions_common_api___permission__features.json b/devel/electron12/files/patch-extensions_common_api___permission__features.json
similarity index 91%
rename from devel/electron11/files/patch-extensions_common_api___permission__features.json
rename to devel/electron12/files/patch-extensions_common_api___permission__features.json
index c1e23c5e7435b55ccce7d5583fb1a6c0520c4838..4b63985411f0596ceb28db1df4774fa2d2b9258c 100644
--- a/devel/electron11/files/patch-extensions_common_api___permission__features.json
+++ b/devel/electron12/files/patch-extensions_common_api___permission__features.json
@@ -1,4 +1,4 @@
---- extensions/common/api/_permission_features.json.orig	2021-01-07 00:36:35 UTC
+--- extensions/common/api/_permission_features.json.orig	2021-04-14 01:08:49 UTC
 +++ extensions/common/api/_permission_features.json
 @@ -135,7 +135,7 @@
      {
@@ -9,7 +9,7 @@
        "whitelist": [
          "1C93BD3CF875F4A73C0B2A163BB8FBDA8B8B3D80",  // http://crbug.com/387169
          "A3BC37E2148AC4E99BE4B16AF9D42DD1E592BBBE",  // http://crbug.com/387169
-@@ -473,7 +473,7 @@
+@@ -457,7 +457,7 @@
    }, {
      "channel": "stable",
      "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
@@ -18,7 +18,7 @@
      "whitelist": [
        "0DE0F05680A4A056BCEC864ED8DDA84296F82B40",  // http://crbug.com/434651
        "1C93BD3CF875F4A73C0B2A163BB8FBDA8B8B3D80",  // http://crbug.com/293683
-@@ -508,7 +508,7 @@
+@@ -492,7 +492,7 @@
    "networkingPrivate": {
      "channel": "stable",
      "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
diff --git a/devel/electron11/files/patch-extensions_common_api_runtime.json b/devel/electron12/files/patch-extensions_common_api_runtime.json
similarity index 100%
rename from devel/electron11/files/patch-extensions_common_api_runtime.json
rename to devel/electron12/files/patch-extensions_common_api_runtime.json
diff --git a/devel/electron11/files/patch-extensions_common_feature__switch.cc b/devel/electron12/files/patch-extensions_common_feature__switch.cc
similarity index 100%
rename from devel/electron11/files/patch-extensions_common_feature__switch.cc
rename to devel/electron12/files/patch-extensions_common_feature__switch.cc
diff --git a/devel/electron11/files/patch-extensions_common_features_feature.cc b/devel/electron12/files/patch-extensions_common_features_feature.cc
similarity index 69%
rename from devel/electron11/files/patch-extensions_common_features_feature.cc
rename to devel/electron12/files/patch-extensions_common_features_feature.cc
index 8f62180fbb6adca89bdb74a6a492a054e28e9948..4c2c4001f4c4d6e0bbd62ca04e0b124f431c8b0d 100644
--- a/devel/electron11/files/patch-extensions_common_features_feature.cc
+++ b/devel/electron12/files/patch-extensions_common_features_feature.cc
@@ -1,8 +1,8 @@
---- extensions/common/features/feature.cc.orig	2021-01-07 00:36:35 UTC
+--- extensions/common/features/feature.cc.orig	2021-04-14 01:08:49 UTC
 +++ extensions/common/features/feature.cc
 @@ -26,7 +26,7 @@ Feature::Platform Feature::GetCurrentPlatform() {
    return LACROS_PLATFORM;
- #elif defined(OS_CHROMEOS) && !BUILDFLAG(IS_LACROS)
+ #elif BUILDFLAG(IS_CHROMEOS_ASH) && !BUILDFLAG(IS_CHROMEOS_LACROS)
    return CHROMEOS_PLATFORM;
 -#elif defined(OS_LINUX)
 +#elif defined(OS_LINUX) || defined(OS_BSD)
diff --git a/devel/electron11/files/patch-extensions_common_image__util.cc b/devel/electron12/files/patch-extensions_common_image__util.cc
similarity index 100%
rename from devel/electron11/files/patch-extensions_common_image__util.cc
rename to devel/electron12/files/patch-extensions_common_image__util.cc
diff --git a/devel/electron11/files/patch-extensions_common_stack__frame.cc b/devel/electron12/files/patch-extensions_common_stack__frame.cc
similarity index 100%
rename from devel/electron11/files/patch-extensions_common_stack__frame.cc
rename to devel/electron12/files/patch-extensions_common_stack__frame.cc
diff --git a/devel/electron11/files/patch-extensions_renderer_bindings_api__binding__util.cc b/devel/electron12/files/patch-extensions_renderer_bindings_api__binding__util.cc
similarity index 78%
rename from devel/electron11/files/patch-extensions_renderer_bindings_api__binding__util.cc
rename to devel/electron12/files/patch-extensions_renderer_bindings_api__binding__util.cc
index f46531f38a4ade1e339419e0b013f3da1479bfc7..fd54f4935a1a7236e9daf1a56234a146da5e1704 100644
--- a/devel/electron11/files/patch-extensions_renderer_bindings_api__binding__util.cc
+++ b/devel/electron12/files/patch-extensions_renderer_bindings_api__binding__util.cc
@@ -1,6 +1,6 @@
---- extensions/renderer/bindings/api_binding_util.cc.orig	2021-01-07 00:36:35 UTC
+--- extensions/renderer/bindings/api_binding_util.cc.orig	2021-04-14 01:08:49 UTC
 +++ extensions/renderer/bindings/api_binding_util.cc
-@@ -130,6 +130,8 @@ std::string GetPlatformString() {
+@@ -131,6 +131,8 @@ std::string GetPlatformString() {
    return "mac";
  #elif defined(OS_WIN)
    return "win";
diff --git a/devel/electron12/files/patch-extensions_shell_BUILD.gn b/devel/electron12/files/patch-extensions_shell_BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..77061817ca1fe3bf5e223f647f6c53ea70f4d7a9
--- /dev/null
+++ b/devel/electron12/files/patch-extensions_shell_BUILD.gn
@@ -0,0 +1,31 @@
+--- extensions/shell/BUILD.gn.orig	2021-04-14 01:08:49 UTC
++++ extensions/shell/BUILD.gn
+@@ -205,16 +205,24 @@ source_set("app_shell_lib") {
+   }
+ 
+   if (is_linux || is_chromeos_lacros) {
++    if (!is_bsd) {
++      sources += [
++        "app/shell_crash_reporter_client.cc",
++        "app/shell_crash_reporter_client.h",
++      ]
++    }
+     sources += [
+-      "app/shell_crash_reporter_client.cc",
+-      "app/shell_crash_reporter_client.h",
+       "browser/api/file_system/shell_file_system_delegate.cc",
+       "browser/api/file_system/shell_file_system_delegate.h",
+     ]
++    if (!is_bsd) {
++      deps += [
++        "//components/crash/core/app",
++        "//components/crash/core/common",
++      ]
++    }
+     deps += [
+       "//build:branding_buildflags",
+-      "//components/crash/core/app",
+-      "//components/crash/core/common",
+       "//components/upload_list",
+       "//components/version_info:generate_version_info",
+     ]
diff --git a/devel/electron11/files/patch-extensions_shell_app_shell__main__delegate.cc b/devel/electron12/files/patch-extensions_shell_app_shell__main__delegate.cc
similarity index 83%
rename from devel/electron11/files/patch-extensions_shell_app_shell__main__delegate.cc
rename to devel/electron12/files/patch-extensions_shell_app_shell__main__delegate.cc
index 81f5fc53d768288ff824d4b184b4a12cd37f6426..06ab2930b182c0ca9fc012909a3194770f2799ed 100644
--- a/devel/electron11/files/patch-extensions_shell_app_shell__main__delegate.cc
+++ b/devel/electron12/files/patch-extensions_shell_app_shell__main__delegate.cc
@@ -1,6 +1,6 @@
---- extensions/shell/app/shell_main_delegate.cc.orig	2021-01-07 00:36:35 UTC
+--- extensions/shell/app/shell_main_delegate.cc.orig	2021-04-14 01:08:49 UTC
 +++ extensions/shell/app/shell_main_delegate.cc
-@@ -37,7 +37,7 @@
+@@ -39,7 +39,7 @@
  
  #if defined(OS_WIN)
  #include "base/base_paths_win.h"
@@ -9,7 +9,7 @@
  #include "base/nix/xdg_util.h"
  #elif defined(OS_MAC)
  #include "base/base_paths_mac.h"
-@@ -69,7 +69,7 @@ base::FilePath GetDataPath() {
+@@ -75,7 +75,7 @@ base::FilePath GetDataPath() {
      return cmd_line->GetSwitchValuePath(switches::kContentShellDataPath);
  
    base::FilePath data_dir;
diff --git a/devel/electron11/files/patch-extensions_shell_browser_api_runtime_shell__runtime__api__delegate.cc b/devel/electron12/files/patch-extensions_shell_browser_api_runtime_shell__runtime__api__delegate.cc
similarity index 65%
rename from devel/electron11/files/patch-extensions_shell_browser_api_runtime_shell__runtime__api__delegate.cc
rename to devel/electron12/files/patch-extensions_shell_browser_api_runtime_shell__runtime__api__delegate.cc
index 44aa7452f9a62a2d27f749ed7016000609648c10..a1b94a663b5f39d8ef26f4d5cd924c2b45880d0b 100644
--- a/devel/electron11/files/patch-extensions_shell_browser_api_runtime_shell__runtime__api__delegate.cc
+++ b/devel/electron12/files/patch-extensions_shell_browser_api_runtime_shell__runtime__api__delegate.cc
@@ -1,11 +1,11 @@
---- extensions/shell/browser/api/runtime/shell_runtime_api_delegate.cc.orig	2021-01-07 00:36:35 UTC
+--- extensions/shell/browser/api/runtime/shell_runtime_api_delegate.cc.orig	2021-04-14 01:08:49 UTC
 +++ extensions/shell/browser/api/runtime/shell_runtime_api_delegate.cc
 @@ -45,7 +45,7 @@ void ShellRuntimeAPIDelegate::OpenURL(const GURL& unin
  bool ShellRuntimeAPIDelegate::GetPlatformInfo(PlatformInfo* info) {
- #if defined(OS_CHROMEOS)
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
    info->os = api::runtime::PLATFORM_OS_CROS;
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
    info->os = api::runtime::PLATFORM_OS_LINUX;
  #endif
    return true;
diff --git a/devel/electron12/files/patch-extensions_shell_browser_shell__extensions__api__client.cc b/devel/electron12/files/patch-extensions_shell_browser_shell__extensions__api__client.cc
new file mode 100644
index 0000000000000000000000000000000000000000..bf37573fc8709b214295e13e13214e298bc28247
--- /dev/null
+++ b/devel/electron12/files/patch-extensions_shell_browser_shell__extensions__api__client.cc
@@ -0,0 +1,20 @@
+--- extensions/shell/browser/shell_extensions_api_client.cc.orig	2021-04-14 01:08:49 UTC
++++ extensions/shell/browser/shell_extensions_api_client.cc
+@@ -19,7 +19,7 @@
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ #include "extensions/shell/browser/api/file_system/shell_file_system_delegate.h"
+ #endif
+ 
+@@ -57,7 +57,7 @@ ShellExtensionsAPIClient::CreateDisplayInfoProvider() 
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ FileSystemDelegate* ShellExtensionsAPIClient::GetFileSystemDelegate() {
+   if (!file_system_delegate_)
+     file_system_delegate_ = std::make_unique<ShellFileSystemDelegate>();
diff --git a/devel/electron12/files/patch-extensions_shell_browser_shell__extensions__api__client.h b/devel/electron12/files/patch-extensions_shell_browser_shell__extensions__api__client.h
new file mode 100644
index 0000000000000000000000000000000000000000..a2364fbe5f66dd8169d25f478e9de2783c8c12eb
--- /dev/null
+++ b/devel/electron12/files/patch-extensions_shell_browser_shell__extensions__api__client.h
@@ -0,0 +1,20 @@
+--- extensions/shell/browser/shell_extensions_api_client.h.orig	2021-04-14 01:08:49 UTC
++++ extensions/shell/browser/shell_extensions_api_client.h
+@@ -36,7 +36,7 @@ class ShellExtensionsAPIClient : public ExtensionsAPIC
+       const override;
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   FileSystemDelegate* GetFileSystemDelegate() override;
+ #endif
+   MessagingDelegate* GetMessagingDelegate() override;
+@@ -45,7 +45,7 @@ class ShellExtensionsAPIClient : public ExtensionsAPIC
+  private:
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   std::unique_ptr<FileSystemDelegate> file_system_delegate_;
+ #endif
+   std::unique_ptr<MessagingDelegate> messaging_delegate_;
diff --git a/devel/electron11/files/patch-google__apis_gcm_engine_heartbeat__manager.cc b/devel/electron12/files/patch-google__apis_gcm_engine_heartbeat__manager.cc
similarity index 56%
rename from devel/electron11/files/patch-google__apis_gcm_engine_heartbeat__manager.cc
rename to devel/electron12/files/patch-google__apis_gcm_engine_heartbeat__manager.cc
index b70c5b1a757866105287ee8ea7b86da518eadbc7..d917fef7f1aadac0e0c9fc3ea3ad053dabf57ef3 100644
--- a/devel/electron11/files/patch-google__apis_gcm_engine_heartbeat__manager.cc
+++ b/devel/electron12/files/patch-google__apis_gcm_engine_heartbeat__manager.cc
@@ -1,53 +1,53 @@
---- google_apis/gcm/engine/heartbeat_manager.cc.orig	2021-01-07 00:36:35 UTC
+--- google_apis/gcm/engine/heartbeat_manager.cc.orig	2021-04-14 01:08:49 UTC
 +++ google_apis/gcm/engine/heartbeat_manager.cc
-@@ -31,13 +31,13 @@ const int kMinClientHeartbeatIntervalMs = 1000 * 30;  
+@@ -32,13 +32,13 @@ const int kMinClientHeartbeatIntervalMs = 1000 * 30;  
  // Minimum time spent sleeping before we force a new heartbeat.
  const int kMinSuspendTimeMs = 1000 * 10; // 10 seconds.
  
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
  // The period at which to check if the heartbeat time has passed. Used to
  // protect against platforms where the timer is delayed by the system being
  // suspended.  Only needed on linux because the other OSes provide a standard
  // way to be notified of system suspend and resume events.
  const int kHeartbeatMissedCheckMs = 1000 * 60 * 5;  // 5 minutes.
--#endif  // defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#endif  // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#endif  // defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
  
  }  // namespace
  
-@@ -191,7 +191,7 @@ void HeartbeatManager::RestartTimer() {
+@@ -192,7 +192,7 @@ void HeartbeatManager::RestartTimer() {
        base::BindRepeating(&HeartbeatManager::OnHeartbeatTriggered,
                            weak_ptr_factory_.GetWeakPtr()));
  
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
    // Windows, Mac, Android, iOS, and Chrome OS all provide a way to be notified
    // when the system is suspending or resuming.  The only one that does not is
    // Linux so we need to poll to check for missed heartbeats.
-@@ -200,7 +200,7 @@ void HeartbeatManager::RestartTimer() {
+@@ -201,7 +201,7 @@ void HeartbeatManager::RestartTimer() {
        base::BindOnce(&HeartbeatManager::CheckForMissedHeartbeat,
                       weak_ptr_factory_.GetWeakPtr()),
        base::TimeDelta::FromMilliseconds(kHeartbeatMissedCheckMs));
--#endif  // defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#endif  // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#endif  // defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
  }
  
  void HeartbeatManager::CheckForMissedHeartbeat() {
-@@ -216,14 +216,14 @@ void HeartbeatManager::CheckForMissedHeartbeat() {
+@@ -217,14 +217,14 @@ void HeartbeatManager::CheckForMissedHeartbeat() {
      return;
    }
  
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
    // Otherwise check again later.
    io_task_runner_->PostDelayedTask(
        FROM_HERE,
        base::BindOnce(&HeartbeatManager::CheckForMissedHeartbeat,
                       weak_ptr_factory_.GetWeakPtr()),
        base::TimeDelta::FromMilliseconds(kHeartbeatMissedCheckMs));
--#endif  // defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#endif  // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#endif  // defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
  }
  
  void HeartbeatManager::UpdateHeartbeatInterval() {
diff --git a/devel/electron11/files/patch-gpu_command__buffer_common_gpu__memory__buffer__support.cc b/devel/electron12/files/patch-gpu_command__buffer_common_gpu__memory__buffer__support.cc
similarity index 100%
rename from devel/electron11/files/patch-gpu_command__buffer_common_gpu__memory__buffer__support.cc
rename to devel/electron12/files/patch-gpu_command__buffer_common_gpu__memory__buffer__support.cc
diff --git a/devel/electron11/files/patch-gpu_command__buffer_service_external__semaphore.cc b/devel/electron12/files/patch-gpu_command__buffer_service_external__semaphore.cc
similarity index 100%
rename from devel/electron11/files/patch-gpu_command__buffer_service_external__semaphore.cc
rename to devel/electron12/files/patch-gpu_command__buffer_service_external__semaphore.cc
diff --git a/devel/electron11/files/patch-gpu_command__buffer_service_external__vk__image__backing.cc b/devel/electron12/files/patch-gpu_command__buffer_service_external__vk__image__backing.cc
similarity index 87%
rename from devel/electron11/files/patch-gpu_command__buffer_service_external__vk__image__backing.cc
rename to devel/electron12/files/patch-gpu_command__buffer_service_external__vk__image__backing.cc
index 3fedbc13b12021aca369ccaf7d9de0cd63c50d9f..8e62fbbb3cb6bf586a90334f5707a65483645d4f 100644
--- a/devel/electron11/files/patch-gpu_command__buffer_service_external__vk__image__backing.cc
+++ b/devel/electron12/files/patch-gpu_command__buffer_service_external__vk__image__backing.cc
@@ -1,6 +1,6 @@
---- gpu/command_buffer/service/external_vk_image_backing.cc.orig	2021-01-07 00:36:35 UTC
+--- gpu/command_buffer/service/external_vk_image_backing.cc.orig	2021-04-14 01:08:50 UTC
 +++ gpu/command_buffer/service/external_vk_image_backing.cc
-@@ -29,7 +29,7 @@
+@@ -30,7 +30,7 @@
  #include "ui/gl/gl_version_info.h"
  #include "ui/gl/scoped_binders.h"
  
@@ -9,7 +9,7 @@
  #include "gpu/command_buffer/service/external_vk_image_dawn_representation.h"
  #endif
  
-@@ -583,7 +583,7 @@ std::unique_ptr<SharedImageRepresentationDawn>
+@@ -616,7 +616,7 @@ std::unique_ptr<SharedImageRepresentationDawn>
  ExternalVkImageBacking::ProduceDawn(SharedImageManager* manager,
                                      MemoryTypeTracker* tracker,
                                      WGPUDevice wgpuDevice) {
@@ -18,7 +18,7 @@
    auto wgpu_format = viz::ToWGPUFormat(format());
  
    if (wgpu_format == WGPUTextureFormat_Undefined) {
-@@ -602,7 +602,7 @@ ExternalVkImageBacking::ProduceDawn(SharedImageManager
+@@ -635,7 +635,7 @@ ExternalVkImageBacking::ProduceDawn(SharedImageManager
  
    return std::make_unique<ExternalVkImageDawnRepresentation>(
        manager, this, tracker, wgpuDevice, wgpu_format, std::move(memory_fd));
@@ -27,7 +27,7 @@
    NOTIMPLEMENTED_LOG_ONCE();
    return nullptr;
  #endif
-@@ -615,7 +615,7 @@ GLuint ExternalVkImageBacking::ProduceGLTextureInterna
+@@ -648,7 +648,7 @@ GLuint ExternalVkImageBacking::ProduceGLTextureInterna
    gl::GLApi* api = gl::g_current_gl_context;
    base::Optional<ScopedDedicatedMemoryObject> memory_object;
    if (!use_separate_gl_texture()) {
diff --git a/devel/electron11/files/patch-gpu_command__buffer_service_program__manager.cc b/devel/electron12/files/patch-gpu_command__buffer_service_program__manager.cc
similarity index 100%
rename from devel/electron11/files/patch-gpu_command__buffer_service_program__manager.cc
rename to devel/electron12/files/patch-gpu_command__buffer_service_program__manager.cc
diff --git a/devel/electron12/files/patch-gpu_command__buffer_service_webgpu__decoder__impl.cc b/devel/electron12/files/patch-gpu_command__buffer_service_webgpu__decoder__impl.cc
new file mode 100644
index 0000000000000000000000000000000000000000..e7d83d9fe667dafe9be5b24d604868862931a86c
--- /dev/null
+++ b/devel/electron12/files/patch-gpu_command__buffer_service_webgpu__decoder__impl.cc
@@ -0,0 +1,17 @@
+--- gpu/command_buffer/service/webgpu_decoder_impl.cc.orig	2021-04-14 01:08:50 UTC
++++ gpu/command_buffer/service/webgpu_decoder_impl.cc
+@@ -946,12 +946,12 @@ error::Error WebGPUDecoderImpl::HandleRequestAdapter(
+       static_cast<DawnRequestAdapterSerial>(c.request_adapter_serial);
+ 
+   if (gr_context_type_ != GrContextType::kVulkan) {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+     SendAdapterProperties(request_adapter_serial, -1, nullptr,
+                           "WebGPU on Linux requires command-line flag "
+                           "--enable-features=Vulkan,UseSkiaRenderer");
+     return error::kNoError;
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   }
+ 
+   int32_t requested_adapter_index = GetPreferredAdapterIndex(power_preference);
diff --git a/devel/electron11/files/patch-gpu_command__buffer_tests_gl__copy__texture__CHROMIUM__unittest.cc b/devel/electron12/files/patch-gpu_command__buffer_tests_gl__copy__texture__CHROMIUM__unittest.cc
similarity index 91%
rename from devel/electron11/files/patch-gpu_command__buffer_tests_gl__copy__texture__CHROMIUM__unittest.cc
rename to devel/electron12/files/patch-gpu_command__buffer_tests_gl__copy__texture__CHROMIUM__unittest.cc
index d61e927fe2e2cbe6fbf2cc4b2e1394d98e4aaf6b..1bbf7ac26daa9a4610faf67dffa9deb4c2871e5f 100644
--- a/devel/electron11/files/patch-gpu_command__buffer_tests_gl__copy__texture__CHROMIUM__unittest.cc
+++ b/devel/electron12/files/patch-gpu_command__buffer_tests_gl__copy__texture__CHROMIUM__unittest.cc
@@ -1,4 +1,4 @@
---- gpu/command_buffer/tests/gl_copy_texture_CHROMIUM_unittest.cc.orig	2021-01-07 00:36:35 UTC
+--- gpu/command_buffer/tests/gl_copy_texture_CHROMIUM_unittest.cc.orig	2021-04-14 01:08:50 UTC
 +++ gpu/command_buffer/tests/gl_copy_texture_CHROMIUM_unittest.cc
 @@ -258,7 +258,7 @@ void getExpectedColorAndMask(GLenum src_internal_forma
  
@@ -9,7 +9,7 @@
        // The alpha channel values for LUMINANCE_ALPHA source don't work OK
        // on Mac or Linux, so skip comparison of those, see crbug.com/926579
        setColor(1, 1, 1, src_internal_format != GL_LUMINANCE_ALPHA,
-@@ -643,8 +643,8 @@ class GLCopyTextureCHROMIUMES3Test : public GLCopyText
+@@ -637,8 +637,8 @@ class GLCopyTextureCHROMIUMES3Test : public GLCopyText
  
    bool ShouldSkipNorm16() const {
      DCHECK(!ShouldSkipTest());
@@ -20,7 +20,7 @@
      (defined(ARCH_CPU_X86) || defined(ARCH_CPU_X86_64))
      // Make sure it's tested; it is safe to assume that the flag is always true
      // on desktop.
-@@ -656,7 +656,7 @@ class GLCopyTextureCHROMIUMES3Test : public GLCopyText
+@@ -650,7 +650,7 @@ class GLCopyTextureCHROMIUMES3Test : public GLCopyText
  
    bool ShouldSkipRGBA16ToRGB10A2() const {
      DCHECK(!ShouldSkipTest());
diff --git a/devel/electron11/files/patch-gpu_command__buffer_tests_gl__test__utils.cc b/devel/electron12/files/patch-gpu_command__buffer_tests_gl__test__utils.cc
similarity index 100%
rename from devel/electron11/files/patch-gpu_command__buffer_tests_gl__test__utils.cc
rename to devel/electron12/files/patch-gpu_command__buffer_tests_gl__test__utils.cc
diff --git a/devel/electron11/files/patch-gpu_command__buffer_tests_gl__test__utils.h b/devel/electron12/files/patch-gpu_command__buffer_tests_gl__test__utils.h
similarity index 100%
rename from devel/electron11/files/patch-gpu_command__buffer_tests_gl__test__utils.h
rename to devel/electron12/files/patch-gpu_command__buffer_tests_gl__test__utils.h
diff --git a/devel/electron11/files/patch-gpu_command__buffer_tests_webgpu__test.cc b/devel/electron12/files/patch-gpu_command__buffer_tests_webgpu__test.cc
similarity index 85%
rename from devel/electron11/files/patch-gpu_command__buffer_tests_webgpu__test.cc
rename to devel/electron12/files/patch-gpu_command__buffer_tests_webgpu__test.cc
index f8529723233e03841d5d727835534ff00788b256..e204310c8710a04041eb8884f60d6ecb436d0c3a 100644
--- a/devel/electron11/files/patch-gpu_command__buffer_tests_webgpu__test.cc
+++ b/devel/electron12/files/patch-gpu_command__buffer_tests_webgpu__test.cc
@@ -1,4 +1,4 @@
---- gpu/command_buffer/tests/webgpu_test.cc.orig	2021-01-07 00:36:35 UTC
+--- gpu/command_buffer/tests/webgpu_test.cc.orig	2021-04-14 01:08:50 UTC
 +++ gpu/command_buffer/tests/webgpu_test.cc
 @@ -51,8 +51,8 @@ bool WebGPUTest::WebGPUSupported() const {
  
@@ -11,8 +11,8 @@
      BUILDFLAG(USE_DAWN)
    return true;
  #else
-@@ -63,7 +63,7 @@ bool WebGPUTest::WebGPUSharedImageSupported() const {
- void WebGPUTest::SetUp() {
+@@ -67,7 +67,7 @@ void WebGPUTest::SetUp() {
+ 
    gpu::GpuPreferences gpu_preferences;
    gpu_preferences.enable_webgpu = true;
 -#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && BUILDFLAG(USE_DAWN)
diff --git a/devel/electron11/files/patch-gpu_config_gpu__control__list.cc b/devel/electron12/files/patch-gpu_config_gpu__control__list.cc
similarity index 72%
rename from devel/electron11/files/patch-gpu_config_gpu__control__list.cc
rename to devel/electron12/files/patch-gpu_config_gpu__control__list.cc
index 2f5a8f663b40a9141af0a590fb62cbcbc1072e84..33c74ee55d534dbdd42cb3e0a5d0f1e3f10a6983 100644
--- a/devel/electron11/files/patch-gpu_config_gpu__control__list.cc
+++ b/devel/electron12/files/patch-gpu_config_gpu__control__list.cc
@@ -1,8 +1,8 @@
---- gpu/config/gpu_control_list.cc.orig	2021-01-07 00:36:35 UTC
+--- gpu/config/gpu_control_list.cc.orig	2021-04-14 01:08:50 UTC
 +++ gpu/config/gpu_control_list.cc
-@@ -17,7 +17,11 @@
- #include "base/values.h"
+@@ -18,7 +18,11 @@
  #include "build/build_config.h"
+ #include "build/chromeos_buildflags.h"
  #include "gpu/config/gpu_util.h"
 +#if defined(OS_BSD)
 +#include <re2/re2.h>
@@ -12,16 +12,16 @@
  
  namespace gpu {
  namespace {
-@@ -275,7 +279,7 @@ bool GpuControlList::More::GLVersionInfoMismatch(
+@@ -276,7 +280,7 @@ bool GpuControlList::More::GLVersionInfoMismatch(
  GpuControlList::GLType GpuControlList::More::GetDefaultGLType() {
- #if defined(OS_CHROMEOS)
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
    return kGLTypeGL;
 -#elif defined(OS_LINUX) || defined(OS_OPENBSD)
 +#elif defined(OS_LINUX) || defined(OS_BSD)
    return kGLTypeGL;
  #elif defined(OS_MAC)
    return kGLTypeGL;
-@@ -781,7 +785,7 @@ GpuControlList::OsType GpuControlList::GetOsType() {
+@@ -782,7 +786,7 @@ GpuControlList::OsType GpuControlList::GetOsType() {
    return kOsAndroid;
  #elif defined(OS_FUCHSIA)
    return kOsFuchsia;
diff --git a/devel/electron11/files/patch-gpu_config_gpu__test__config.cc b/devel/electron12/files/patch-gpu_config_gpu__test__config.cc
similarity index 69%
rename from devel/electron11/files/patch-gpu_config_gpu__test__config.cc
rename to devel/electron12/files/patch-gpu_config_gpu__test__config.cc
index a4371cd4d051c1affa0d6a84e6c80c90412c6de6..a350be8767c0aca339eba6ad94d0cf27efb620bc 100644
--- a/devel/electron11/files/patch-gpu_config_gpu__test__config.cc
+++ b/devel/electron12/files/patch-gpu_config_gpu__test__config.cc
@@ -1,8 +1,8 @@
---- gpu/config/gpu_test_config.cc.orig	2021-01-07 00:36:35 UTC
+--- gpu/config/gpu_test_config.cc.orig	2021-04-14 01:08:50 UTC
 +++ gpu/config/gpu_test_config.cc
-@@ -27,7 +27,7 @@ namespace {
+@@ -28,7 +28,7 @@ namespace {
  GPUTestConfig::OS GetCurrentOS() {
- #if defined(OS_CHROMEOS)
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
    return GPUTestConfig::kOsChromeOS;
 -#elif defined(OS_LINUX) || defined(OS_OPENBSD)
 +#elif defined(OS_LINUX) || defined(OS_BSD)
diff --git a/devel/electron11/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc b/devel/electron12/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc
similarity index 93%
rename from devel/electron11/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc
rename to devel/electron12/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc
index 726d24fe81c5386aaeb0d20f18449ef58e757c75..56290557f8c2de34dc5aa48e5a41b77d3217bdc1 100644
--- a/devel/electron11/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc
+++ b/devel/electron12/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc
@@ -1,4 +1,4 @@
---- gpu/ipc/common/gpu_memory_buffer_support.cc.orig	2021-01-07 00:36:35 UTC
+--- gpu/ipc/common/gpu_memory_buffer_support.cc.orig	2021-04-14 01:08:50 UTC
 +++ gpu/ipc/common/gpu_memory_buffer_support.cc
 @@ -16,7 +16,7 @@
  #include "gpu/ipc/common/gpu_memory_buffer_impl_io_surface.h"
@@ -36,7 +36,7 @@
    return gfx::NATIVE_PIXMAP;
  #elif defined(OS_WIN)
    return gfx::DXGI_SHARED_HANDLE;
-@@ -194,7 +194,7 @@ GpuMemoryBufferSupport::CreateGpuMemoryBufferImplFromH
+@@ -201,7 +201,7 @@ GpuMemoryBufferSupport::CreateGpuMemoryBufferImplFromH
        return GpuMemoryBufferImplIOSurface::CreateFromHandle(
            std::move(handle), size, format, usage, std::move(callback));
  #endif
diff --git a/devel/electron11/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h b/devel/electron12/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h
similarity index 100%
rename from devel/electron11/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h
rename to devel/electron12/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h
diff --git a/devel/electron11/files/patch-gpu_ipc_service_gpu__init.cc b/devel/electron12/files/patch-gpu_ipc_service_gpu__init.cc
similarity index 50%
rename from devel/electron11/files/patch-gpu_ipc_service_gpu__init.cc
rename to devel/electron12/files/patch-gpu_ipc_service_gpu__init.cc
index 884535a526e6cdaf3edaa15c2a4bdc88311e8fba..9a3068a212cb90cecb1627faab947133b871a3bd 100644
--- a/devel/electron11/files/patch-gpu_ipc_service_gpu__init.cc
+++ b/devel/electron12/files/patch-gpu_ipc_service_gpu__init.cc
@@ -1,33 +1,60 @@
---- gpu/ipc/service/gpu_init.cc.orig	2021-01-07 00:36:35 UTC
+--- gpu/ipc/service/gpu_init.cc.orig	2021-04-14 01:08:50 UTC
 +++ gpu/ipc/service/gpu_init.cc
-@@ -107,7 +107,7 @@ void InitializePlatformOverlaySettings(GPUInfo* gpu_in
- #endif
+@@ -108,7 +108,7 @@ void InitializePlatformOverlaySettings(GPUInfo* gpu_in
  }
  
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !BUILDFLAG(IS_CHROMECAST)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS) && !BUILDFLAG(IS_CHROMECAST)) || defined(OS_BSD)
+ #if BUILDFLAG(IS_CHROMEOS_LACROS) || \
+-    (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMECAST))
++    (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMECAST)) || defined(OS_BSD)
  bool CanAccessNvidiaDeviceFile() {
    bool res = true;
    base::ScopedBlockingCall scoped_blocking_call(FROM_HERE,
-@@ -118,7 +118,7 @@ bool CanAccessNvidiaDeviceFile() {
+@@ -119,7 +119,7 @@ bool CanAccessNvidiaDeviceFile() {
    }
    return res;
  }
--#endif  // OS_LINUX && !OS_CHROMEOS && !BUILDFLAG(IS_CHROMECAST)
-+#endif  // (OS_LINUX && !OS_CHROMEOS && !BUILDFLAG(IS_CHROMECAST)) || defined(OS_BSD)
+-#endif  // BUILDFLAG(IS_CHROMEOS_LACROS) || (defined(OS_LINUX)  &&
++#endif  // BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD) || (defined(OS_LINUX)  &&
+         // !BUILDFLAG(IS_CHROMECAST))
  
  class GpuWatchdogInit {
-  public:
-@@ -203,7 +203,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+@@ -206,7 +206,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
      device_perf_info_ = device_perf_info;
    }
  
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
    if (gpu_info_.gpu.vendor_id == 0x10de &&  // NVIDIA
        gpu_info_.gpu.driver_vendor == "NVIDIA" && !CanAccessNvidiaDeviceFile())
      return false;
-@@ -337,14 +337,14 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+@@ -258,7 +258,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+   delayed_watchdog_enable = true;
+ #endif
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   // PreSandbox is mainly for resource handling and not related to the GPU
+   // driver, it doesn't need the GPU watchdog. The loadLibrary may take long
+   // time that killing and restarting the GPU process will not help.
+@@ -298,7 +298,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+   }
+ 
+   bool attempted_startsandbox = false;
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   // On Chrome OS ARM Mali, GPU driver userspace creates threads when
+   // initializing a GL context, so start the sandbox early.
+   // TODO(zmo): Need to collect OS version before this.
+@@ -307,7 +307,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+         watchdog_thread_.get(), &gpu_info_, gpu_preferences_);
+     attempted_startsandbox = true;
+   }
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ 
+   base::TimeTicks before_initialize_one_off = base::TimeTicks::Now();
+ 
+@@ -345,7 +345,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
    }
    if (gl_initialized && gl_use_swiftshader_ &&
        gl::GetGLImplementation() != gl::kGLImplementationSwiftShaderGL) {
@@ -36,7 +63,8 @@
      VLOG(1) << "Quit GPU process launch to fallback to SwiftShader cleanly "
              << "on Linux";
      return false;
- #else
+@@ -353,7 +353,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+     SaveHardwareGpuInfoAndGpuFeatureInfo();
      gl::init::ShutdownGL(true);
      gl_initialized = false;
 -#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
@@ -44,7 +72,16 @@
    }
  
    if (!gl_initialized) {
-@@ -424,7 +424,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+@@ -379,7 +379,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+     }
+   }
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   // The ContentSandboxHelper is currently the only one implementation of
+   // GpuSandboxHelper and it has no dependency. Except on Linux where
+   // VaapiWrapper checks the GL implementation to determine which display
+@@ -433,7 +433,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
            command_line, gpu_feature_info_,
            gpu_preferences_.disable_software_rasterizer, false);
        if (gl_use_swiftshader_) {
@@ -53,7 +90,7 @@
          VLOG(1) << "Quit GPU process launch to fallback to SwiftShader cleanly "
                  << "on Linux";
          return false;
-@@ -438,7 +438,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+@@ -448,7 +448,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
                << "failed";
            return false;
          }
@@ -62,7 +99,7 @@
        }
      } else {  // gl_use_swiftshader_ == true
        switch (gpu_preferences_.use_vulkan) {
-@@ -514,7 +514,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+@@ -524,7 +524,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
  
    InitializePlatformOverlaySettings(&gpu_info_, gpu_feature_info_);
  
@@ -71,7 +108,7 @@
    // Driver may create a compatibility profile context when collect graphics
    // information on Linux platform. Try to collect graphics information
    // based on core profile context after disabling platform extensions.
-@@ -533,7 +533,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+@@ -543,7 +543,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
        return false;
      }
    }
@@ -80,7 +117,7 @@
  
    if (gl_use_swiftshader_) {
      AdjustInfoToSwiftShader();
-@@ -701,7 +701,7 @@ void GpuInit::InitializeInProcess(base::CommandLine* c
+@@ -726,7 +726,7 @@ void GpuInit::InitializeInProcess(base::CommandLine* c
  
    InitializePlatformOverlaySettings(&gpu_info_, gpu_feature_info_);
  
@@ -89,7 +126,7 @@
    // Driver may create a compatibility profile context when collect graphics
    // information on Linux platform. Try to collect graphics information
    // based on core profile context after disabling platform extensions.
-@@ -721,7 +721,7 @@ void GpuInit::InitializeInProcess(base::CommandLine* c
+@@ -747,7 +747,7 @@ void GpuInit::InitializeInProcess(base::CommandLine* c
        }
      }
    }
diff --git a/devel/electron11/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc b/devel/electron12/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc
similarity index 100%
rename from devel/electron11/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc
rename to devel/electron12/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc
diff --git a/devel/electron11/files/patch-gpu_ipc_service_gpu__watchdog__thread__v2.cc b/devel/electron12/files/patch-gpu_ipc_service_gpu__watchdog__thread.cc
similarity index 59%
rename from devel/electron11/files/patch-gpu_ipc_service_gpu__watchdog__thread__v2.cc
rename to devel/electron12/files/patch-gpu_ipc_service_gpu__watchdog__thread.cc
index d53d8a3f3a5925c46561c72bb8e383ee7457ce11..b4ea655309fbc663d381efb775672b00b7f44cad 100644
--- a/devel/electron11/files/patch-gpu_ipc_service_gpu__watchdog__thread__v2.cc
+++ b/devel/electron12/files/patch-gpu_ipc_service_gpu__watchdog__thread.cc
@@ -1,6 +1,6 @@
---- gpu/ipc/service/gpu_watchdog_thread_v2.cc.orig	2021-03-20 14:36:05 UTC
-+++ gpu/ipc/service/gpu_watchdog_thread_v2.cc
-@@ -77,7 +77,7 @@ GpuWatchdogThreadImplV2::GpuWatchdogThreadImplV2(
+--- gpu/ipc/service/gpu_watchdog_thread.cc.orig	2021-04-14 01:08:50 UTC
++++ gpu/ipc/service/gpu_watchdog_thread.cc
+@@ -73,7 +73,7 @@ GpuWatchdogThread::GpuWatchdogThread(base::TimeDelta t
    }
  #endif
  
@@ -9,7 +9,7 @@
    tty_file_ = base::OpenFile(
        base::FilePath(FILE_PATH_LITERAL("/sys/class/tty/tty0/active")), "r");
    UpdateActiveTTY();
-@@ -105,7 +105,7 @@ GpuWatchdogThreadImplV2::~GpuWatchdogThreadImplV2() {
+@@ -101,7 +101,7 @@ GpuWatchdogThread::~GpuWatchdogThread() {
      CloseHandle(watched_thread_handle_);
  #endif
  
@@ -18,7 +18,7 @@
    if (tty_file_)
      fclose(tty_file_);
  #endif
-@@ -481,7 +481,7 @@ void GpuWatchdogThreadImplV2::OnWatchdogTimeout() {
+@@ -440,7 +440,7 @@ void GpuWatchdogThread::OnWatchdogTimeout() {
    if (foregrounded_event_)
      num_of_timeout_after_foregrounded_++;
  
@@ -27,19 +27,19 @@
    UpdateActiveTTY();
  #endif
  
-@@ -874,7 +874,7 @@ bool GpuWatchdogThreadImplV2::WithinOneMinFromForegrou
+@@ -773,7 +773,7 @@ bool GpuWatchdogThread::WithinOneMinFromForegrounded()
    return foregrounded_event_ && num_of_timeout_after_foregrounded_ <= count;
  }
  
 -#if defined(USE_X11)
 +#if defined(USE_X11) && !defined(OS_BSD)
- void GpuWatchdogThreadImplV2::UpdateActiveTTY() {
+ void GpuWatchdogThread::UpdateActiveTTY() {
    last_active_tty_ = active_tty_;
  
-@@ -891,7 +891,7 @@ void GpuWatchdogThreadImplV2::UpdateActiveTTY() {
+@@ -790,7 +790,7 @@ void GpuWatchdogThread::UpdateActiveTTY() {
  #endif
  
- bool GpuWatchdogThreadImplV2::ContinueOnNonHostX11ServerTty() {
+ bool GpuWatchdogThread::ContinueOnNonHostX11ServerTty() {
 -#if defined(USE_X11)
 +#if defined(USE_X11) && !defined(OS_BSD)
    if (host_tty_ == -1 || active_tty_ == -1)
diff --git a/devel/electron12/files/patch-gpu_ipc_service_gpu__watchdog__thread.h b/devel/electron12/files/patch-gpu_ipc_service_gpu__watchdog__thread.h
new file mode 100644
index 0000000000000000000000000000000000000000..062acaf8cf43952c261dd34c63881a1a79c8a2fb
--- /dev/null
+++ b/devel/electron12/files/patch-gpu_ipc_service_gpu__watchdog__thread.h
@@ -0,0 +1,20 @@
+--- gpu/ipc/service/gpu_watchdog_thread.h.orig	2021-04-14 01:08:50 UTC
++++ gpu/ipc/service/gpu_watchdog_thread.h
+@@ -198,7 +198,7 @@ class GPU_IPC_SERVICE_EXPORT GpuWatchdogThread : publi
+   bool WithinOneMinFromPowerResumed();
+   bool WithinOneMinFromForegrounded();
+ 
+-#if defined(USE_X11)
++#if defined(USE_X11) && !defined(OS_BSD)
+   void UpdateActiveTTY();
+ #endif
+   // The watchdog continues when it's not on the TTY of our host X11 server.
+@@ -270,7 +270,7 @@ class GPU_IPC_SERVICE_EXPORT GpuWatchdogThread : publi
+   bool less_than_full_thread_time_after_capped_ = false;
+ #endif
+ 
+-#if defined(USE_X11)
++#if defined(USE_X11) && !defined(OS_BSD)
+   FILE* tty_file_ = nullptr;
+   int host_tty_ = -1;
+   int active_tty_ = -1;
diff --git a/devel/electron11/files/patch-gpu_vulkan_vulkan__function__pointers.cc b/devel/electron12/files/patch-gpu_vulkan_vulkan__function__pointers.cc
similarity index 59%
rename from devel/electron11/files/patch-gpu_vulkan_vulkan__function__pointers.cc
rename to devel/electron12/files/patch-gpu_vulkan_vulkan__function__pointers.cc
index f5150780af7bae025ec9943cc0bee4c78fff0888..2c80e581355e7ab1bef8ef4dfc853e6ef0f71dc7 100644
--- a/devel/electron11/files/patch-gpu_vulkan_vulkan__function__pointers.cc
+++ b/devel/electron12/files/patch-gpu_vulkan_vulkan__function__pointers.cc
@@ -1,6 +1,6 @@
---- gpu/vulkan/vulkan_function_pointers.cc.orig	2021-01-07 00:36:35 UTC
+--- gpu/vulkan/vulkan_function_pointers.cc.orig	2021-04-14 01:08:50 UTC
 +++ gpu/vulkan/vulkan_function_pointers.cc
-@@ -862,7 +862,7 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointer
+@@ -890,7 +890,7 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointer
    }
  #endif  // defined(OS_ANDROID)
  
@@ -9,7 +9,7 @@
    if (gfx::HasExtension(enabled_extensions,
                          VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME)) {
      vkGetSemaphoreFdKHR = reinterpret_cast<PFN_vkGetSemaphoreFdKHR>(
-@@ -881,7 +881,7 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointer
+@@ -909,7 +909,7 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointer
        return false;
      }
    }
@@ -18,7 +18,7 @@
  
  #if defined(OS_WIN)
    if (gfx::HasExtension(enabled_extensions,
-@@ -906,7 +906,7 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointer
+@@ -934,7 +934,7 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointer
    }
  #endif  // defined(OS_WIN)
  
@@ -27,7 +27,7 @@
    if (gfx::HasExtension(enabled_extensions,
                          VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME)) {
      vkGetMemoryFdKHR = reinterpret_cast<PFN_vkGetMemoryFdKHR>(
-@@ -926,7 +926,7 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointer
+@@ -954,7 +954,7 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointer
        return false;
      }
    }
@@ -36,3 +36,21 @@
  
  #if defined(OS_WIN)
    if (gfx::HasExtension(enabled_extensions,
+@@ -1103,7 +1103,7 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointer
+     }
+   }
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   if (gfx::HasExtension(enabled_extensions,
+                         VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME)) {
+     vkGetImageDrmFormatModifierPropertiesEXT =
+@@ -1116,7 +1116,7 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointer
+       return false;
+     }
+   }
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ 
+   return true;
+ }
diff --git a/devel/electron11/files/patch-gpu_vulkan_vulkan__function__pointers.h b/devel/electron12/files/patch-gpu_vulkan_vulkan__function__pointers.h
similarity index 64%
rename from devel/electron11/files/patch-gpu_vulkan_vulkan__function__pointers.h
rename to devel/electron12/files/patch-gpu_vulkan_vulkan__function__pointers.h
index 5071a603d78393a607c63cd48a8b522deb436cd4..446cad5ba2c29a95b52b2cd4e28481c10ce0601c 100644
--- a/devel/electron11/files/patch-gpu_vulkan_vulkan__function__pointers.h
+++ b/devel/electron12/files/patch-gpu_vulkan_vulkan__function__pointers.h
@@ -1,6 +1,6 @@
---- gpu/vulkan/vulkan_function_pointers.h.orig	2021-01-07 00:36:35 UTC
+--- gpu/vulkan/vulkan_function_pointers.h.orig	2021-04-14 01:08:50 UTC
 +++ gpu/vulkan/vulkan_function_pointers.h
-@@ -236,10 +236,10 @@ struct COMPONENT_EXPORT(VULKAN) VulkanFunctionPointers
+@@ -240,10 +240,10 @@ struct COMPONENT_EXPORT(VULKAN) VulkanFunctionPointers
        vkGetAndroidHardwareBufferPropertiesANDROID;
  #endif  // defined(OS_ANDROID)
  
@@ -13,7 +13,7 @@
  
  #if defined(OS_WIN)
    VulkanFunction<PFN_vkGetSemaphoreWin32HandleKHR> vkGetSemaphoreWin32HandleKHR;
-@@ -247,10 +247,10 @@ struct COMPONENT_EXPORT(VULKAN) VulkanFunctionPointers
+@@ -251,10 +251,10 @@ struct COMPONENT_EXPORT(VULKAN) VulkanFunctionPointers
        vkImportSemaphoreWin32HandleKHR;
  #endif  // defined(OS_WIN)
  
@@ -26,7 +26,20 @@
  
  #if defined(OS_WIN)
    VulkanFunction<PFN_vkGetMemoryWin32HandleKHR> vkGetMemoryWin32HandleKHR;
-@@ -955,7 +955,7 @@ ALWAYS_INLINE VkResult vkGetAndroidHardwareBufferPrope
+@@ -291,10 +291,10 @@ struct COMPONENT_EXPORT(VULKAN) VulkanFunctionPointers
+   VulkanFunction<PFN_vkGetSwapchainImagesKHR> vkGetSwapchainImagesKHR;
+   VulkanFunction<PFN_vkQueuePresentKHR> vkQueuePresentKHR;
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   VulkanFunction<PFN_vkGetImageDrmFormatModifierPropertiesEXT>
+       vkGetImageDrmFormatModifierPropertiesEXT;
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ };
+ 
+ }  // namespace gpu
+@@ -985,7 +985,7 @@ ALWAYS_INLINE VkResult vkGetAndroidHardwareBufferPrope
  }
  #endif  // defined(OS_ANDROID)
  
@@ -35,7 +48,7 @@
  ALWAYS_INLINE VkResult
  vkGetSemaphoreFdKHR(VkDevice device,
                      const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
-@@ -969,7 +969,7 @@ ALWAYS_INLINE VkResult vkImportSemaphoreFdKHR(
+@@ -999,7 +999,7 @@ ALWAYS_INLINE VkResult vkImportSemaphoreFdKHR(
    return gpu::GetVulkanFunctionPointers()->vkImportSemaphoreFdKHR(
        device, pImportSemaphoreFdInfo);
  }
@@ -44,7 +57,7 @@
  
  #if defined(OS_WIN)
  ALWAYS_INLINE VkResult vkGetSemaphoreWin32HandleKHR(
-@@ -988,7 +988,7 @@ vkImportSemaphoreWin32HandleKHR(VkDevice device,
+@@ -1018,7 +1018,7 @@ vkImportSemaphoreWin32HandleKHR(VkDevice device,
  }
  #endif  // defined(OS_WIN)
  
@@ -53,7 +66,7 @@
  ALWAYS_INLINE VkResult vkGetMemoryFdKHR(VkDevice device,
                                          const VkMemoryGetFdInfoKHR* pGetFdInfo,
                                          int* pFd) {
-@@ -1003,7 +1003,7 @@ vkGetMemoryFdPropertiesKHR(VkDevice device,
+@@ -1033,7 +1033,7 @@ vkGetMemoryFdPropertiesKHR(VkDevice device,
    return gpu::GetVulkanFunctionPointers()->vkGetMemoryFdPropertiesKHR(
        device, handleType, fd, pMemoryFdProperties);
  }
@@ -62,10 +75,22 @@
  
  #if defined(OS_WIN)
  ALWAYS_INLINE VkResult vkGetMemoryWin32HandleKHR(
-@@ -1083,4 +1083,4 @@ ALWAYS_INLINE VkResult vkQueuePresentKHR(VkQueue queue
+@@ -1113,7 +1113,7 @@ ALWAYS_INLINE VkResult vkQueuePresentKHR(VkQueue queue
                                                               pPresentInfo);
  }
  
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ ALWAYS_INLINE VkResult vkGetImageDrmFormatModifierPropertiesEXT(
+     VkDevice device,
+     VkImage image,
+@@ -1121,6 +1121,6 @@ ALWAYS_INLINE VkResult vkGetImageDrmFormatModifierProp
+   return gpu::GetVulkanFunctionPointers()
+       ->vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties);
+ }
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ 
 -#endif  // GPU_VULKAN_VULKAN_FUNCTION_POINTERS_H_
 \ No newline at end of file
 +#endif  // GPU_VULKAN_VULKAN_FUNCTION_POINTERS_H_
diff --git a/devel/electron12/files/patch-gpu_vulkan_vulkan__image.cc b/devel/electron12/files/patch-gpu_vulkan_vulkan__image.cc
new file mode 100644
index 0000000000000000000000000000000000000000..3fa03a331ef623013cf1f687b0428cbfdff3465c
--- /dev/null
+++ b/devel/electron12/files/patch-gpu_vulkan_vulkan__image.cc
@@ -0,0 +1,11 @@
+--- gpu/vulkan/vulkan_image.cc.orig	2021-04-14 01:08:50 UTC
++++ gpu/vulkan/vulkan_image.cc
+@@ -320,7 +320,7 @@ bool VulkanImage::InitializeWithExternalMemory(
+   };
+   format_info_2.pNext = &external_info;
+ 
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+   VkPhysicalDeviceImageDrmFormatModifierInfoEXT modifier_info = {
+       .sType =
+           VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT,
diff --git a/devel/electron12/files/patch-gpu_vulkan_vulkan__image.h b/devel/electron12/files/patch-gpu_vulkan_vulkan__image.h
new file mode 100644
index 0000000000000000000000000000000000000000..642173d1b93234561b31909b5a38b9bc55fd086b
--- /dev/null
+++ b/devel/electron12/files/patch-gpu_vulkan_vulkan__image.h
@@ -0,0 +1,20 @@
+--- gpu/vulkan/vulkan_image.h.orig	2021-04-14 01:08:50 UTC
++++ gpu/vulkan/vulkan_image.h
+@@ -84,7 +84,7 @@ class COMPONENT_EXPORT(VULKAN) VulkanImage {
+       VkImageUsageFlags usage,
+       VkImageCreateFlags flags);
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   static std::unique_ptr<VulkanImage> CreateWithExternalMemoryAndModifiers(
+       VulkanDeviceQueue* device_queue,
+       const gfx::Size& size,
+@@ -166,7 +166,7 @@ class COMPONENT_EXPORT(VULKAN) VulkanImage {
+       VkImageCreateFlags flags,
+       VkImageTiling image_tiling);
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   bool InitializeWithExternalMemoryAndModifiers(VulkanDeviceQueue* device_queue,
+                                                 const gfx::Size& size,
+                                                 VkFormat format,
diff --git a/devel/electron11/files/patch-headless_BUILD.gn b/devel/electron12/files/patch-headless_BUILD.gn
similarity index 73%
rename from devel/electron11/files/patch-headless_BUILD.gn
rename to devel/electron12/files/patch-headless_BUILD.gn
index 00a532b8c9e85480c2e4b1dc6c5a918cfe8a42a4..628a807e839c93d88ad4f9cf4fb70f8f37460c85 100644
--- a/devel/electron11/files/patch-headless_BUILD.gn
+++ b/devel/electron12/files/patch-headless_BUILD.gn
@@ -1,6 +1,6 @@
---- headless/BUILD.gn.orig	2021-01-07 00:36:35 UTC
+--- headless/BUILD.gn.orig	2021-04-14 01:08:50 UTC
 +++ headless/BUILD.gn
-@@ -275,7 +275,7 @@ source_set("headless_shared_sources") {
+@@ -272,7 +272,7 @@ source_set("headless_shared_sources") {
    sources += generated_devtools_api
    sources += get_target_outputs(":protocol_sources")
  
@@ -9,7 +9,7 @@
      sources += [
        "lib/headless_crash_reporter_client.cc",
        "lib/headless_crash_reporter_client.h",
-@@ -295,7 +295,7 @@ source_set("headless_shared_sources") {
+@@ -291,7 +291,7 @@ source_set("headless_shared_sources") {
      "//url",
    ]
  
@@ -18,7 +18,7 @@
      deps += [ "//components/crash/content/browser" ]
    }
    if (is_component_build && is_win) {
-@@ -448,7 +448,7 @@ component("headless_non_renderer") {
+@@ -459,7 +459,7 @@ component("headless_non_renderer") {
        "//v8",
      ]
  
@@ -27,7 +27,7 @@
        deps += [ "//components/crash/content/browser" ]
      }
      if (is_win) {
-@@ -732,7 +732,7 @@ static_library("headless_shell_lib") {
+@@ -772,7 +772,7 @@ static_library("headless_shell_lib") {
      public_deps += [ ":headless_non_renderer" ]
    }
  
diff --git a/devel/electron11/files/patch-headless_lib_browser_headless__browser__main__parts.h b/devel/electron12/files/patch-headless_lib_browser_headless__browser__main__parts.h
similarity index 82%
rename from devel/electron11/files/patch-headless_lib_browser_headless__browser__main__parts.h
rename to devel/electron12/files/patch-headless_lib_browser_headless__browser__main__parts.h
index b01ac8b53ba931331e2c90357734e0996ebaee56..bf1d658b36384d1e33e84ec4f36eec6f06f3469a 100644
--- a/devel/electron11/files/patch-headless_lib_browser_headless__browser__main__parts.h
+++ b/devel/electron12/files/patch-headless_lib_browser_headless__browser__main__parts.h
@@ -1,6 +1,6 @@
---- headless/lib/browser/headless_browser_main_parts.h.orig	2021-01-07 00:36:35 UTC
+--- headless/lib/browser/headless_browser_main_parts.h.orig	2021-04-14 01:08:50 UTC
 +++ headless/lib/browser/headless_browser_main_parts.h
-@@ -32,7 +32,7 @@ class HeadlessBrowserMainParts : public content::Brows
+@@ -37,7 +37,7 @@ class HeadlessBrowserMainParts : public content::Brows
  #if defined(OS_MAC)
    void PreMainMessageLoopStart() override;
  #endif
diff --git a/devel/electron11/files/patch-headless_lib_browser_headless__browser__main__parts__linux.cc b/devel/electron12/files/patch-headless_lib_browser_headless__browser__main__parts__linux.cc
similarity index 62%
rename from devel/electron11/files/patch-headless_lib_browser_headless__browser__main__parts__linux.cc
rename to devel/electron12/files/patch-headless_lib_browser_headless__browser__main__parts__linux.cc
index 7f01a7a20f50a2fe07ef02727ad344949177c23b..09bd0a208dea9cbbf13e1dcda760884260792bf7 100644
--- a/devel/electron11/files/patch-headless_lib_browser_headless__browser__main__parts__linux.cc
+++ b/devel/electron12/files/patch-headless_lib_browser_headless__browser__main__parts__linux.cc
@@ -1,11 +1,11 @@
---- headless/lib/browser/headless_browser_main_parts_linux.cc.orig	2021-01-07 00:36:35 UTC
+--- headless/lib/browser/headless_browser_main_parts_linux.cc.orig	2021-04-14 01:08:50 UTC
 +++ headless/lib/browser/headless_browser_main_parts_linux.cc
-@@ -10,7 +10,7 @@
+@@ -11,7 +11,7 @@
  namespace headless {
  
  void HeadlessBrowserMainParts::PostMainMessageLoopStart() {
--#if defined(USE_DBUS) && !defined(OS_CHROMEOS)
-+#if defined(USE_DBUS) && !defined(OS_CHROMEOS) && !defined(OS_BSD)
+-#if defined(USE_DBUS) && !BUILDFLAG(IS_CHROMEOS_ASH)
++#if defined(USE_DBUS) && !BUILDFLAG(IS_CHROMEOS_ASH) && !defined(OS_BSD)
    bluez::BluezDBusManager::Initialize(/*system_bus=*/nullptr);
  #endif
  }
diff --git a/devel/electron11/files/patch-headless_lib_browser_headless__content__browser__client.cc b/devel/electron12/files/patch-headless_lib_browser_headless__content__browser__client.cc
similarity index 86%
rename from devel/electron11/files/patch-headless_lib_browser_headless__content__browser__client.cc
rename to devel/electron12/files/patch-headless_lib_browser_headless__content__browser__client.cc
index 1785e5bc1b59f32e00f562724d499f5eb02dabb6..013f5a223f95be6ec57896450a64f48e13ec5098 100644
--- a/devel/electron11/files/patch-headless_lib_browser_headless__content__browser__client.cc
+++ b/devel/electron12/files/patch-headless_lib_browser_headless__content__browser__client.cc
@@ -1,6 +1,6 @@
---- headless/lib/browser/headless_content_browser_client.cc.orig	2021-01-07 00:36:35 UTC
+--- headless/lib/browser/headless_content_browser_client.cc.orig	2021-04-14 01:08:50 UTC
 +++ headless/lib/browser/headless_content_browser_client.cc
-@@ -241,7 +241,7 @@ void HeadlessContentBrowserClient::AppendExtraCommandL
+@@ -278,7 +278,7 @@ void HeadlessContentBrowserClient::AppendExtraCommandL
                                              process_type, child_process_id);
    }
  
diff --git a/devel/electron12/files/patch-headless_lib_browser_headless__request__context__manager.cc b/devel/electron12/files/patch-headless_lib_browser_headless__request__context__manager.cc
new file mode 100644
index 0000000000000000000000000000000000000000..24278279ab78ba4bfda65a841bfb5f43172245be
--- /dev/null
+++ b/devel/electron12/files/patch-headless_lib_browser_headless__request__context__manager.cc
@@ -0,0 +1,20 @@
+--- headless/lib/browser/headless_request_context_manager.cc.orig	2021-04-14 01:08:50 UTC
++++ headless/lib/browser/headless_request_context_manager.cc
+@@ -34,7 +34,7 @@ namespace {
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ constexpr char kProductName[] = "HeadlessChrome";
+ #endif
+ 
+@@ -72,7 +72,7 @@ void SetCryptConfigOnce(const base::FilePath& user_dat
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   ::network::mojom::CryptConfigPtr config =
+       ::network::mojom::CryptConfig::New();
+   config->store = base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
diff --git a/devel/electron11/files/patch-headless_lib_headless__content__main__delegate.cc b/devel/electron12/files/patch-headless_lib_headless__content__main__delegate.cc
similarity index 75%
rename from devel/electron11/files/patch-headless_lib_headless__content__main__delegate.cc
rename to devel/electron12/files/patch-headless_lib_headless__content__main__delegate.cc
index 5348876c0ea938227f988f53fe8836fcdc7f707a..b9772a8d7d3cdf480766e1da21f097b06e63aae4 100644
--- a/devel/electron11/files/patch-headless_lib_headless__content__main__delegate.cc
+++ b/devel/electron12/files/patch-headless_lib_headless__content__main__delegate.cc
@@ -1,6 +1,6 @@
---- headless/lib/headless_content_main_delegate.cc.orig	2021-01-07 00:36:35 UTC
+--- headless/lib/headless_content_main_delegate.cc.orig	2021-04-14 01:08:50 UTC
 +++ headless/lib/headless_content_main_delegate.cc
-@@ -323,7 +323,7 @@ void HeadlessContentMainDelegate::InitCrashReporter(
+@@ -326,7 +326,7 @@ void HeadlessContentMainDelegate::InitCrashReporter(
      const base::CommandLine& command_line) {
    if (command_line.HasSwitch(::switches::kDisableBreakpad))
      return;
@@ -9,7 +9,7 @@
    // TODO(fuchsia): Implement this when crash reporting/Breakpad are available
    // in Fuchsia. (crbug.com/753619)
    NOTIMPLEMENTED();
-@@ -352,7 +352,7 @@ void HeadlessContentMainDelegate::InitCrashReporter(
+@@ -355,7 +355,7 @@ void HeadlessContentMainDelegate::InitCrashReporter(
    crash_reporter::InitializeCrashpadWithEmbeddedHandler(
        process_type.empty(), process_type, "", base::FilePath());
  #endif  // defined(HEADLESS_USE_BREAKPAD)
diff --git a/devel/electron11/files/patch-headless_lib_headless__macros.h b/devel/electron12/files/patch-headless_lib_headless__macros.h
similarity index 100%
rename from devel/electron11/files/patch-headless_lib_headless__macros.h
rename to devel/electron12/files/patch-headless_lib_headless__macros.h
diff --git a/devel/electron11/files/patch-ipc_ipc__channel.h b/devel/electron12/files/patch-ipc_ipc__channel.h
similarity index 100%
rename from devel/electron11/files/patch-ipc_ipc__channel.h
rename to devel/electron12/files/patch-ipc_ipc__channel.h
diff --git a/devel/electron11/files/patch-ipc_ipc__channel__common.cc b/devel/electron12/files/patch-ipc_ipc__channel__common.cc
similarity index 100%
rename from devel/electron11/files/patch-ipc_ipc__channel__common.cc
rename to devel/electron12/files/patch-ipc_ipc__channel__common.cc
diff --git a/devel/electron11/files/patch-ipc_ipc__channel__mojo.cc b/devel/electron12/files/patch-ipc_ipc__channel__mojo.cc
similarity index 100%
rename from devel/electron11/files/patch-ipc_ipc__channel__mojo.cc
rename to devel/electron12/files/patch-ipc_ipc__channel__mojo.cc
diff --git a/devel/electron11/files/patch-ipc_ipc__message__utils.cc b/devel/electron12/files/patch-ipc_ipc__message__utils.cc
similarity index 77%
rename from devel/electron11/files/patch-ipc_ipc__message__utils.cc
rename to devel/electron12/files/patch-ipc_ipc__message__utils.cc
index 4eda84f2d69dbcb842d82d30cbaedf434f856d56..8befc116f28cd75db29f8544ad09dd88e94d3661 100644
--- a/devel/electron11/files/patch-ipc_ipc__message__utils.cc
+++ b/devel/electron12/files/patch-ipc_ipc__message__utils.cc
@@ -1,6 +1,6 @@
---- ipc/ipc_message_utils.cc.orig	2021-01-07 00:36:36 UTC
+--- ipc/ipc_message_utils.cc.orig	2021-04-14 01:08:51 UTC
 +++ ipc/ipc_message_utils.cc
-@@ -356,7 +356,7 @@ void ParamTraits<unsigned int>::Log(const param_type& 
+@@ -357,7 +357,7 @@ void ParamTraits<unsigned int>::Log(const param_type& 
    l->append(base::NumberToString(p));
  }
  
diff --git a/devel/electron11/files/patch-ipc_ipc__message__utils.h b/devel/electron12/files/patch-ipc_ipc__message__utils.h
similarity index 100%
rename from devel/electron11/files/patch-ipc_ipc__message__utils.h
rename to devel/electron12/files/patch-ipc_ipc__message__utils.h
diff --git a/devel/electron11/files/patch-media_BUILD.gn b/devel/electron12/files/patch-media_BUILD.gn
similarity index 67%
rename from devel/electron11/files/patch-media_BUILD.gn
rename to devel/electron12/files/patch-media_BUILD.gn
index 9ca3ff2013ea18505e098311a0a83bd412a46bae..858a4c9688b80fdb6ec167e0f3bc29f8649a87b4 100644
--- a/devel/electron11/files/patch-media_BUILD.gn
+++ b/devel/electron12/files/patch-media_BUILD.gn
@@ -1,6 +1,6 @@
---- media/BUILD.gn.orig	2021-01-07 00:36:36 UTC
+--- media/BUILD.gn.orig	2021-04-14 01:08:51 UTC
 +++ media/BUILD.gn
-@@ -65,6 +65,9 @@ config("media_config") {
+@@ -66,6 +66,9 @@ config("media_config") {
        defines += [ "DLOPEN_PULSEAUDIO" ]
      }
    }
diff --git a/devel/electron11/files/patch-media_audio_BUILD.gn b/devel/electron12/files/patch-media_audio_BUILD.gn
similarity index 78%
rename from devel/electron11/files/patch-media_audio_BUILD.gn
rename to devel/electron12/files/patch-media_audio_BUILD.gn
index c8ee8205affe7e103f5f093765bfa353a11a1bf6..14141edadeb0029b0b8f6712f5a831d092f0a4d5 100644
--- a/devel/electron11/files/patch-media_audio_BUILD.gn
+++ b/devel/electron12/files/patch-media_audio_BUILD.gn
@@ -1,6 +1,6 @@
---- media/audio/BUILD.gn.orig	2021-01-25 11:26:59 UTC
+--- media/audio/BUILD.gn.orig	2021-04-22 07:51:50 UTC
 +++ media/audio/BUILD.gn
-@@ -242,7 +242,7 @@ source_set("audio") {
+@@ -244,7 +244,7 @@ source_set("audio") {
      ]
    }
  
@@ -9,7 +9,7 @@
      sources += [ "linux/audio_manager_linux.cc" ]
    }
  
-@@ -305,6 +305,17 @@ source_set("audio") {
+@@ -309,6 +309,17 @@ source_set("audio") {
      } else {
        deps += [ ":libpulse_stubs" ]
      }
diff --git a/devel/electron11/files/patch-media_audio_alsa_audio__manager__alsa.cc b/devel/electron12/files/patch-media_audio_alsa_audio__manager__alsa.cc
similarity index 100%
rename from devel/electron11/files/patch-media_audio_alsa_audio__manager__alsa.cc
rename to devel/electron12/files/patch-media_audio_alsa_audio__manager__alsa.cc
diff --git a/devel/electron11/files/patch-media_audio_audio__features.cc b/devel/electron12/files/patch-media_audio_audio__features.cc
similarity index 79%
rename from devel/electron11/files/patch-media_audio_audio__features.cc
rename to devel/electron12/files/patch-media_audio_audio__features.cc
index 184f7fc9620383ed35422de2a877403e93d5dbb8..a06f27cbe994428cce112052a656db712d95eded 100644
--- a/devel/electron11/files/patch-media_audio_audio__features.cc
+++ b/devel/electron12/files/patch-media_audio_audio__features.cc
@@ -1,6 +1,6 @@
---- media/audio/audio_features.cc.orig	2021-01-07 00:36:36 UTC
+--- media/audio/audio_features.cc.orig	2021-04-14 01:08:51 UTC
 +++ media/audio/audio_features.cc
-@@ -11,7 +11,7 @@ namespace features {
+@@ -12,7 +12,7 @@ namespace features {
  // detected. It will be restarted when needed.
  const base::Feature kAudioServiceOutOfProcessKillAtHang{
    "AudioServiceOutOfProcessKillAtHang",
diff --git a/devel/electron11/files/patch-media_audio_audio__input__device.cc b/devel/electron12/files/patch-media_audio_audio__input__device.cc
similarity index 100%
rename from devel/electron11/files/patch-media_audio_audio__input__device.cc
rename to devel/electron12/files/patch-media_audio_audio__input__device.cc
diff --git a/devel/electron11/files/patch-media_audio_audio__manager.cc b/devel/electron12/files/patch-media_audio_audio__manager.cc
similarity index 100%
rename from devel/electron11/files/patch-media_audio_audio__manager.cc
rename to devel/electron12/files/patch-media_audio_audio__manager.cc
diff --git a/devel/electron11/files/patch-media_audio_audio__manager.h b/devel/electron12/files/patch-media_audio_audio__manager.h
similarity index 100%
rename from devel/electron11/files/patch-media_audio_audio__manager.h
rename to devel/electron12/files/patch-media_audio_audio__manager.h
diff --git a/devel/electron11/files/patch-media_audio_audio__output__proxy__unittest.cc b/devel/electron12/files/patch-media_audio_audio__output__proxy__unittest.cc
similarity index 100%
rename from devel/electron11/files/patch-media_audio_audio__output__proxy__unittest.cc
rename to devel/electron12/files/patch-media_audio_audio__output__proxy__unittest.cc
diff --git a/devel/electron11/files/patch-media_base_audio__latency.cc b/devel/electron12/files/patch-media_base_audio__latency.cc
similarity index 77%
rename from devel/electron11/files/patch-media_base_audio__latency.cc
rename to devel/electron12/files/patch-media_base_audio__latency.cc
index 4ff3742941b380e4730b00dd851115b873455866..105e029cb7aa18a6f6b77cba809915a8798107cf 100644
--- a/devel/electron11/files/patch-media_base_audio__latency.cc
+++ b/devel/electron12/files/patch-media_base_audio__latency.cc
@@ -1,6 +1,6 @@
---- media/base/audio_latency.cc.orig	2021-01-07 00:36:36 UTC
+--- media/base/audio_latency.cc.orig	2021-04-14 01:08:51 UTC
 +++ media/base/audio_latency.cc
-@@ -113,7 +113,7 @@ int AudioLatency::GetRtcBufferSize(int sample_rate, in
+@@ -114,7 +114,7 @@ int AudioLatency::GetRtcBufferSize(int sample_rate, in
      return frames_per_buffer;
    }
  
diff --git a/devel/electron12/files/patch-media_base_media__switches.cc b/devel/electron12/files/patch-media_base_media__switches.cc
new file mode 100644
index 0000000000000000000000000000000000000000..c13f5e27e308c3d1a4c315c255e76a5276232c34
--- /dev/null
+++ b/devel/electron12/files/patch-media_base_media__switches.cc
@@ -0,0 +1,20 @@
+--- media/base/media_switches.cc.orig	2021-04-14 01:08:51 UTC
++++ media/base/media_switches.cc
+@@ -370,7 +370,7 @@ const base::Feature kGav1VideoDecoder{"Gav1VideoDecode
+ // Show toolbar button that opens dialog for controlling media sessions.
+ const base::Feature kGlobalMediaControls {
+   "GlobalMediaControls",
+-#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD) || \
+     BUILDFLAG(IS_CHROMEOS_LACROS)
+       base::FEATURE_ENABLED_BY_DEFAULT
+ #else
+@@ -412,7 +412,7 @@ const base::Feature kGlobalMediaControlsOverlayControl
+ // Show picture-in-picture button in Global Media Controls.
+ const base::Feature kGlobalMediaControlsPictureInPicture {
+   "GlobalMediaControlsPictureInPicture",
+-#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD) || \
+     BUILDFLAG(IS_CHROMEOS_LACROS)
+       base::FEATURE_ENABLED_BY_DEFAULT
+ #else
diff --git a/devel/electron11/files/patch-media_base_scopedfd__helper.h b/devel/electron12/files/patch-media_base_scopedfd__helper.h
similarity index 100%
rename from devel/electron11/files/patch-media_base_scopedfd__helper.h
rename to devel/electron12/files/patch-media_base_scopedfd__helper.h
diff --git a/devel/electron12/files/patch-media_base_vector__math.cc b/devel/electron12/files/patch-media_base_vector__math.cc
new file mode 100644
index 0000000000000000000000000000000000000000..495d201fac2d7ba607b43f651fe732db8a2ea8b5
--- /dev/null
+++ b/devel/electron12/files/patch-media_base_vector__math.cc
@@ -0,0 +1,11 @@
+--- media/base/vector_math.cc.orig	2021-04-14 01:08:51 UTC
++++ media/base/vector_math.cc
+@@ -18,7 +18,7 @@
+ // better, which is anywhere clang is used.
+ // TODO(pcc): Linux currently uses ThinLTO which has broken auto-vectorization
+ // in clang, so use our intrinsic version for now. http://crbug.com/738085
+-#if !defined(__clang__) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if !defined(__clang__) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #define FMAC_FUNC FMAC_SSE
+ #define FMUL_FUNC FMUL_SSE
+ #else
diff --git a/devel/electron11/files/patch-media_base_video__frame.cc b/devel/electron12/files/patch-media_base_video__frame.cc
similarity index 83%
rename from devel/electron11/files/patch-media_base_video__frame.cc
rename to devel/electron12/files/patch-media_base_video__frame.cc
index e73e25faaa48acb9632db65e764a5acc6dcbfae1..778313fb3f89d79ee3054734a1c2cde5ae084e5c 100644
--- a/devel/electron11/files/patch-media_base_video__frame.cc
+++ b/devel/electron12/files/patch-media_base_video__frame.cc
@@ -1,4 +1,4 @@
---- media/base/video_frame.cc.orig	2021-01-07 00:36:36 UTC
+--- media/base/video_frame.cc.orig	2021-04-14 01:08:51 UTC
 +++ media/base/video_frame.cc
 @@ -60,7 +60,7 @@ std::string VideoFrame::StorageTypeToString(
        return "OWNED_MEMORY";
@@ -18,7 +18,7 @@
        // This is not strictly needed but makes explicit that, at VideoFrame
        // level, DmaBufs are not mappable from userspace.
        storage_type != VideoFrame::STORAGE_DMABUFS &&
-@@ -262,7 +262,7 @@ static base::Optional<VideoFrameLayout> GetDefaultLayo
+@@ -263,7 +263,7 @@ static base::Optional<VideoFrameLayout> GetDefaultLayo
    return VideoFrameLayout::CreateWithPlanes(format, coded_size, planes);
  }
  
@@ -27,7 +27,7 @@
  // This class allows us to embed a vector<ScopedFD> into a scoped_refptr, and
  // thus to have several VideoFrames share the same set of DMABUF FDs.
  class VideoFrame::DmabufHolder
-@@ -280,7 +280,7 @@ class VideoFrame::DmabufHolder
+@@ -281,7 +281,7 @@ class VideoFrame::DmabufHolder
    friend class base::RefCountedThreadSafe<DmabufHolder>;
    ~DmabufHolder() = default;
  };
@@ -36,16 +36,16 @@
  
  // static
  bool VideoFrame::IsValidConfig(VideoPixelFormat format,
-@@ -607,7 +607,7 @@ scoped_refptr<VideoFrame> VideoFrame::WrapExternalGpuM
-   }
- 
+@@ -613,7 +613,7 @@ scoped_refptr<VideoFrame> VideoFrame::WrapExternalGpuM
+   for (size_t i = 0; i < num_planes; ++i)
+     planes[i].stride = gpu_memory_buffer->stride(i);
    uint64_t modifier = gfx::NativePixmapHandle::kNoModifier;
 -#if defined(OS_LINUX) || defined(OS_CHROMEOS)
 +#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    if (gpu_memory_buffer->GetType() == gfx::NATIVE_PIXMAP) {
      const auto gmb_handle = gpu_memory_buffer->CloneHandle();
      if (gmb_handle.is_null() ||
-@@ -645,7 +645,7 @@ scoped_refptr<VideoFrame> VideoFrame::WrapExternalGpuM
+@@ -658,7 +658,7 @@ scoped_refptr<VideoFrame> VideoFrame::WrapExternalGpuM
    return frame;
  }
  
@@ -54,7 +54,7 @@
  // static
  scoped_refptr<VideoFrame> VideoFrame::WrapExternalDmabufs(
      const VideoFrameLayout& layout,
-@@ -847,7 +847,7 @@ scoped_refptr<VideoFrame> VideoFrame::WrapVideoFrame(
+@@ -859,7 +859,7 @@ scoped_refptr<VideoFrame> VideoFrame::WrapVideoFrame(
      }
    }
  
@@ -63,7 +63,7 @@
    DCHECK(frame->dmabuf_fds_);
    // If there are any |dmabuf_fds_| plugged in, we should refer them too.
    wrapping_frame->dmabuf_fds_ = frame->dmabuf_fds_;
-@@ -1190,7 +1190,7 @@ VideoFrame::mailbox_holder(size_t texture_index) const
+@@ -1199,7 +1199,7 @@ VideoFrame::mailbox_holder(size_t texture_index) const
                          : mailbox_holders_[texture_index];
  }
  
@@ -72,7 +72,7 @@
  const std::vector<base::ScopedFD>& VideoFrame::DmabufFds() const {
    DCHECK_EQ(storage_type_, STORAGE_DMABUFS);
  
-@@ -1273,7 +1273,7 @@ VideoFrame::VideoFrame(const VideoFrameLayout& layout,
+@@ -1284,7 +1284,7 @@ VideoFrame::VideoFrame(const VideoFrameLayout& layout,
        storage_type_(storage_type),
        visible_rect_(Intersection(visible_rect, gfx::Rect(layout.coded_size()))),
        natural_size_(natural_size),
diff --git a/devel/electron11/files/patch-media_base_video__frame.h b/devel/electron12/files/patch-media_base_video__frame.h
similarity index 87%
rename from devel/electron11/files/patch-media_base_video__frame.h
rename to devel/electron12/files/patch-media_base_video__frame.h
index 1184b846c0a6cc8608d7131b9e4cb3d61b51cac6..ce671aeafb06868f6c8ed50e89e0caff8d21551a 100644
--- a/devel/electron11/files/patch-media_base_video__frame.h
+++ b/devel/electron12/files/patch-media_base_video__frame.h
@@ -1,6 +1,6 @@
---- media/base/video_frame.h.orig	2021-01-07 00:36:36 UTC
+--- media/base/video_frame.h.orig	2021-04-14 01:08:51 UTC
 +++ media/base/video_frame.h
-@@ -41,9 +41,9 @@
+@@ -40,9 +40,9 @@
  #include "base/mac/scoped_cftyperef.h"
  #endif  // defined(OS_MAC)
  
@@ -12,7 +12,7 @@
  
  namespace gfx {
  class GpuMemoryBuffer;
-@@ -83,7 +83,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
+@@ -82,7 +82,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
      STORAGE_UNOWNED_MEMORY = 2,  // External, non owned data pointers.
      STORAGE_OWNED_MEMORY = 3,  // VideoFrame has allocated its own data buffer.
      STORAGE_SHMEM = 4,         // Backed by unsafe (writable) shared memory.
@@ -21,7 +21,7 @@
      // TODO(mcasas): Consider turning this type into STORAGE_NATIVE
      // based on the idea of using this same enum value for both DMA
      // buffers on Linux and CVPixelBuffers on Mac (which currently use
-@@ -260,7 +260,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
+@@ -259,7 +259,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
        ReleaseMailboxCB mailbox_holder_release_cb,
        base::TimeDelta timestamp);
  
@@ -30,7 +30,7 @@
    // Wraps provided dmabufs
    // (https://www.kernel.org/doc/html/latest/driver-api/dma-buf.html) with a
    // VideoFrame. The frame will take ownership of |dmabuf_fds|, and will
-@@ -507,7 +507,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
+@@ -509,7 +509,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
    // mailbox, the caller must wait for the included sync point.
    const gpu::MailboxHolder& mailbox_holder(size_t texture_index) const;
  
@@ -39,7 +39,7 @@
    // Returns a vector containing the backing DmaBufs for this frame. The number
    // of returned DmaBufs will be equal or less than the number of planes of
    // the frame. If there are less, this means that the last FD contains the
-@@ -696,7 +696,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
+@@ -693,7 +693,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
    // GPU memory buffer, if this frame is STORAGE_GPU_MEMORY_BUFFER.
    std::unique_ptr<gfx::GpuMemoryBuffer> gpu_memory_buffer_;
  
diff --git a/devel/electron11/files/patch-media_capture_video_create__video__capture__device__factory.cc b/devel/electron12/files/patch-media_capture_video_create__video__capture__device__factory.cc
similarity index 56%
rename from devel/electron11/files/patch-media_capture_video_create__video__capture__device__factory.cc
rename to devel/electron12/files/patch-media_capture_video_create__video__capture__device__factory.cc
index 470c0725cc8e7294bd9fd08beabb8850186663e8..15124129c9e0fe72e15a9fa825a5a94820cc76b4 100644
--- a/devel/electron11/files/patch-media_capture_video_create__video__capture__device__factory.cc
+++ b/devel/electron12/files/patch-media_capture_video_create__video__capture__device__factory.cc
@@ -1,20 +1,20 @@
---- media/capture/video/create_video_capture_device_factory.cc.orig	2021-01-07 00:36:36 UTC
+--- media/capture/video/create_video_capture_device_factory.cc.orig	2021-04-14 01:08:51 UTC
 +++ media/capture/video/create_video_capture_device_factory.cc
-@@ -10,7 +10,7 @@
+@@ -11,7 +11,7 @@
  #include "media/capture/video/fake_video_capture_device_factory.h"
  #include "media/capture/video/file_video_capture_device_factory.h"
  
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
  #include "media/capture/video/linux/video_capture_device_factory_linux.h"
- #elif defined(OS_CHROMEOS)
- #include "media/capture/video/chromeos/camera_app_device_bridge_impl.h"
-@@ -82,7 +82,7 @@ CreateChromeOSVideoCaptureDeviceFactory(
+ #elif BUILDFLAG(IS_CHROMEOS_ASH)
+ #include "media/capture/video/chromeos/public/cros_features.h"
+@@ -80,7 +80,7 @@ CreateChromeOSVideoCaptureDeviceFactory(
  std::unique_ptr<VideoCaptureDeviceFactory>
  CreatePlatformSpecificVideoCaptureDeviceFactory(
      scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) {
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
    return std::make_unique<VideoCaptureDeviceFactoryLinux>(ui_task_runner);
- #elif defined(OS_CHROMEOS)
-   return CreateChromeOSVideoCaptureDeviceFactory(ui_task_runner, {});
+ #elif BUILDFLAG(IS_CHROMEOS_ASH)
+   return CreateChromeOSVideoCaptureDeviceFactory(ui_task_runner);
diff --git a/devel/electron11/files/patch-media_capture_video_fake__video__capture__device__factory.cc b/devel/electron12/files/patch-media_capture_video_fake__video__capture__device__factory.cc
similarity index 100%
rename from devel/electron11/files/patch-media_capture_video_fake__video__capture__device__factory.cc
rename to devel/electron12/files/patch-media_capture_video_fake__video__capture__device__factory.cc
diff --git a/devel/electron11/files/patch-media_capture_video_file__video__capture__device__factory.cc b/devel/electron12/files/patch-media_capture_video_file__video__capture__device__factory.cc
similarity index 100%
rename from devel/electron11/files/patch-media_capture_video_file__video__capture__device__factory.cc
rename to devel/electron12/files/patch-media_capture_video_file__video__capture__device__factory.cc
diff --git a/devel/electron11/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc b/devel/electron12/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc
similarity index 100%
rename from devel/electron11/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc
rename to devel/electron12/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc
diff --git a/devel/electron11/files/patch-media_capture_video_video__capture__buffer__pool__impl.cc b/devel/electron12/files/patch-media_capture_video_video__capture__buffer__pool__impl.cc
similarity index 100%
rename from devel/electron11/files/patch-media_capture_video_video__capture__buffer__pool__impl.cc
rename to devel/electron12/files/patch-media_capture_video_video__capture__buffer__pool__impl.cc
diff --git a/devel/electron11/files/patch-media_capture_video_video__capture__device__client.cc b/devel/electron12/files/patch-media_capture_video_video__capture__device__client.cc
similarity index 86%
rename from devel/electron11/files/patch-media_capture_video_video__capture__device__client.cc
rename to devel/electron12/files/patch-media_capture_video_video__capture__device__client.cc
index 2a341b13bf3d54d178612e8b1d2c3bfd996140d3..5bba3884f78b025efdef0fd912e9b43b12afe924 100644
--- a/devel/electron11/files/patch-media_capture_video_video__capture__device__client.cc
+++ b/devel/electron12/files/patch-media_capture_video_video__capture__device__client.cc
@@ -1,6 +1,6 @@
---- media/capture/video/video_capture_device_client.cc.orig	2021-01-07 00:36:36 UTC
+--- media/capture/video/video_capture_device_client.cc.orig	2021-04-14 01:08:51 UTC
 +++ media/capture/video/video_capture_device_client.cc
-@@ -318,7 +318,7 @@ void VideoCaptureDeviceClient::OnIncomingCapturedData(
+@@ -319,7 +319,7 @@ void VideoCaptureDeviceClient::OnIncomingCapturedData(
  // see http://linuxtv.org/downloads/v4l-dvb-apis/packed-rgb.html.
  // Windows RGB24 defines blue at lowest byte,
  // see https://msdn.microsoft.com/en-us/library/windows/desktop/dd407253
diff --git a/devel/electron11/files/patch-media_filters_vp9__parser.h b/devel/electron12/files/patch-media_filters_vp9__parser.h
similarity index 100%
rename from devel/electron11/files/patch-media_filters_vp9__parser.h
rename to devel/electron12/files/patch-media_filters_vp9__parser.h
diff --git a/devel/electron11/files/patch-media_formats_common_offset__byte__queue.cc b/devel/electron12/files/patch-media_formats_common_offset__byte__queue.cc
similarity index 100%
rename from devel/electron11/files/patch-media_formats_common_offset__byte__queue.cc
rename to devel/electron12/files/patch-media_formats_common_offset__byte__queue.cc
diff --git a/devel/electron11/files/patch-media_formats_common_offset__byte__queue.h b/devel/electron12/files/patch-media_formats_common_offset__byte__queue.h
similarity index 100%
rename from devel/electron11/files/patch-media_formats_common_offset__byte__queue.h
rename to devel/electron12/files/patch-media_formats_common_offset__byte__queue.h
diff --git a/devel/electron11/files/patch-media_formats_mp2t_es__parser__adts.cc b/devel/electron12/files/patch-media_formats_mp2t_es__parser__adts.cc
similarity index 100%
rename from devel/electron11/files/patch-media_formats_mp2t_es__parser__adts.cc
rename to devel/electron12/files/patch-media_formats_mp2t_es__parser__adts.cc
diff --git a/devel/electron11/files/patch-media_formats_mp2t_es__parser__mpeg1audio.cc b/devel/electron12/files/patch-media_formats_mp2t_es__parser__mpeg1audio.cc
similarity index 83%
rename from devel/electron11/files/patch-media_formats_mp2t_es__parser__mpeg1audio.cc
rename to devel/electron12/files/patch-media_formats_mp2t_es__parser__mpeg1audio.cc
index 1828aac9ca3ce1b57619a583adae3fece3581093..1890b27d4fee0c13b2fcf6682f3fdbf278e7762f 100644
--- a/devel/electron11/files/patch-media_formats_mp2t_es__parser__mpeg1audio.cc
+++ b/devel/electron12/files/patch-media_formats_mp2t_es__parser__mpeg1audio.cc
@@ -1,4 +1,4 @@
---- media/formats/mp2t/es_parser_mpeg1audio.cc.orig	2021-01-07 00:36:37 UTC
+--- media/formats/mp2t/es_parser_mpeg1audio.cc.orig	2021-04-14 01:08:51 UTC
 +++ media/formats/mp2t/es_parser_mpeg1audio.cc
 @@ -108,11 +108,11 @@ bool EsParserMpeg1Audio::LookForMpeg1AudioFrame(
    const uint8_t* es;
@@ -15,7 +15,7 @@
      const uint8_t* cur_buf = &es[offset];
      if (cur_buf[0] != 0xff)
        continue;
-@@ -153,7 +153,7 @@ bool EsParserMpeg1Audio::LookForMpeg1AudioFrame(
+@@ -155,7 +155,7 @@ bool EsParserMpeg1Audio::LookForMpeg1AudioFrame(
      return true;
    }
  
diff --git a/devel/electron11/files/patch-media_gpu_buffer__validation.cc b/devel/electron12/files/patch-media_gpu_buffer__validation.cc
similarity index 100%
rename from devel/electron11/files/patch-media_gpu_buffer__validation.cc
rename to devel/electron12/files/patch-media_gpu_buffer__validation.cc
diff --git a/devel/electron11/files/patch-media_media__options.gni b/devel/electron12/files/patch-media_media__options.gni
similarity index 79%
rename from devel/electron11/files/patch-media_media__options.gni
rename to devel/electron12/files/patch-media_media__options.gni
index 8e7a6129ce4cc0ec1fc83248c18afb2785336797..51ed5c981f7ba9403966020b7469cb1332bea27b 100644
--- a/devel/electron11/files/patch-media_media__options.gni
+++ b/devel/electron12/files/patch-media_media__options.gni
@@ -1,6 +1,6 @@
---- media/media_options.gni.orig	2021-01-07 00:36:37 UTC
+--- media/media_options.gni.orig	2021-04-14 01:08:51 UTC
 +++ media/media_options.gni
-@@ -120,6 +120,9 @@ declare_args() {
+@@ -125,6 +125,9 @@ declare_args() {
    # Enables runtime selection of ALSA library for audio.
    use_alsa = false
  
diff --git a/devel/electron11/files/patch-media_mojo_clients_mojo__video__encode__accelerator.cc b/devel/electron12/files/patch-media_mojo_clients_mojo__video__encode__accelerator.cc
similarity index 100%
rename from devel/electron11/files/patch-media_mojo_clients_mojo__video__encode__accelerator.cc
rename to devel/electron12/files/patch-media_mojo_clients_mojo__video__encode__accelerator.cc
diff --git a/devel/electron11/files/patch-media_mojo_mojom_video__frame__mojom__traits.cc b/devel/electron12/files/patch-media_mojo_mojom_video__frame__mojom__traits.cc
similarity index 90%
rename from devel/electron11/files/patch-media_mojo_mojom_video__frame__mojom__traits.cc
rename to devel/electron12/files/patch-media_mojo_mojom_video__frame__mojom__traits.cc
index 8bf2ff636985d594f7b7603201ad67fcfd71c826..81221890dd293861ddb72a850a97b43f75a4787c 100644
--- a/devel/electron11/files/patch-media_mojo_mojom_video__frame__mojom__traits.cc
+++ b/devel/electron12/files/patch-media_mojo_mojom_video__frame__mojom__traits.cc
@@ -1,8 +1,8 @@
---- media/mojo/mojom/video_frame_mojom_traits.cc.orig	2021-01-07 00:36:37 UTC
+--- media/mojo/mojom/video_frame_mojom_traits.cc.orig	2021-04-14 01:08:51 UTC
 +++ media/mojo/mojom/video_frame_mojom_traits.cc
 @@ -21,9 +21,9 @@
  #include "ui/gfx/mojom/color_space_mojom_traits.h"
- #include "ui/gl/mojom/hdr_metadata_mojom_traits.h"
+ #include "ui/gfx/mojom/hdr_metadata_mojom_traits.h"
  
 -#if defined(OS_LINUX) || defined(OS_CHROMEOS)
 +#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
diff --git a/devel/electron11/files/patch-media_mojo_services_gpu__mojo__media__client.cc b/devel/electron12/files/patch-media_mojo_services_gpu__mojo__media__client.cc
similarity index 85%
rename from devel/electron11/files/patch-media_mojo_services_gpu__mojo__media__client.cc
rename to devel/electron12/files/patch-media_mojo_services_gpu__mojo__media__client.cc
index beeb12608fec267f687c7d177095b4623ad0e040..c0155b2fec2e856af336d0b6e8a60b8d679bd389 100644
--- a/devel/electron11/files/patch-media_mojo_services_gpu__mojo__media__client.cc
+++ b/devel/electron12/files/patch-media_mojo_services_gpu__mojo__media__client.cc
@@ -1,4 +1,4 @@
---- media/mojo/services/gpu_mojo_media_client.cc.orig	2021-01-07 00:36:37 UTC
+--- media/mojo/services/gpu_mojo_media_client.cc.orig	2021-04-14 01:08:51 UTC
 +++ media/mojo/services/gpu_mojo_media_client.cc
 @@ -67,7 +67,7 @@ namespace media {
  namespace {
@@ -9,7 +9,7 @@
  gpu::CommandBufferStub* GetCommandBufferStub(
      scoped_refptr<base::SingleThreadTaskRunner> gpu_task_runner,
      base::WeakPtr<MediaGpuChannelManager> media_gpu_channel_manager,
-@@ -298,7 +298,7 @@ std::unique_ptr<VideoDecoder> GpuMojoMediaClient::Crea
+@@ -289,7 +289,7 @@ std::unique_ptr<VideoDecoder> GpuMojoMediaClient::Crea
                                  command_buffer_id->route_id));
        }
  
diff --git a/devel/electron11/files/patch-media_video_fake__gpu__memory__buffer.cc b/devel/electron12/files/patch-media_video_fake__gpu__memory__buffer.cc
similarity index 100%
rename from devel/electron11/files/patch-media_video_fake__gpu__memory__buffer.cc
rename to devel/electron12/files/patch-media_video_fake__gpu__memory__buffer.cc
diff --git a/devel/electron11/files/patch-media_video_gpu__memory__buffer__video__frame__pool.cc b/devel/electron12/files/patch-media_video_gpu__memory__buffer__video__frame__pool.cc
similarity index 82%
rename from devel/electron11/files/patch-media_video_gpu__memory__buffer__video__frame__pool.cc
rename to devel/electron12/files/patch-media_video_gpu__memory__buffer__video__frame__pool.cc
index 915ff17deede20f17028c4e56d2a673d35ecca2e..8ab3b42cf8653fdcb4d44fcfb073918ee5bf7c03 100644
--- a/devel/electron11/files/patch-media_video_gpu__memory__buffer__video__frame__pool.cc
+++ b/devel/electron12/files/patch-media_video_gpu__memory__buffer__video__frame__pool.cc
@@ -1,6 +1,6 @@
---- media/video/gpu_memory_buffer_video_frame_pool.cc.orig	2021-01-07 00:36:37 UTC
+--- media/video/gpu_memory_buffer_video_frame_pool.cc.orig	2021-04-14 01:08:52 UTC
 +++ media/video/gpu_memory_buffer_video_frame_pool.cc
-@@ -573,7 +573,7 @@ void GpuMemoryBufferVideoFramePool::PoolImpl::CreateHa
+@@ -649,7 +649,7 @@ void GpuMemoryBufferVideoFramePool::PoolImpl::CreateHa
    }
  
    bool is_software_backed_video_frame = !video_frame->HasTextures();
diff --git a/devel/electron12/files/patch-media_video_video__encode__accelerator__adapter.cc b/devel/electron12/files/patch-media_video_video__encode__accelerator__adapter.cc
new file mode 100644
index 0000000000000000000000000000000000000000..ab84540d8191629e64a8f4cc150adf6de988e978
--- /dev/null
+++ b/devel/electron12/files/patch-media_video_video__encode__accelerator__adapter.cc
@@ -0,0 +1,20 @@
+--- media/video/video_encode_accelerator_adapter.cc.orig	2021-04-14 01:08:52 UTC
++++ media/video/video_encode_accelerator_adapter.cc
+@@ -50,7 +50,7 @@ VideoEncodeAccelerator::Config SetUpVeaConfig(
+   if (is_rgb)
+     config.input_format = PIXEL_FORMAT_I420;
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   if (storage_type == VideoFrame::STORAGE_DMABUFS ||
+       storage_type == VideoFrame::STORAGE_GPU_MEMORY_BUFFER) {
+     if (is_rgb)
+@@ -253,7 +253,7 @@ void VideoEncodeAcceleratorAdapter::InitializeInternal
+   auto vea_config =
+       SetUpVeaConfig(profile_, options_, format, first_frame->storage_type());
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   // Linux/ChromeOS require a special configuration to use dmabuf storage.
+   // We need to keep sending frames the same way the first frame was sent.
+   // Other platforms will happily mix GpuMemoryBuffer storage with regular
diff --git a/devel/electron12/files/patch-media_video_video__encode__accelerator__adapter__test.cc b/devel/electron12/files/patch-media_video_video__encode__accelerator__adapter__test.cc
new file mode 100644
index 0000000000000000000000000000000000000000..7e92173d3930967b0978737f782a775b906b7d75
--- /dev/null
+++ b/devel/electron12/files/patch-media_video_video__encode__accelerator__adapter__test.cc
@@ -0,0 +1,11 @@
+--- media/video/video_encode_accelerator_adapter_test.cc.orig	2021-04-14 01:08:52 UTC
++++ media/video/video_encode_accelerator_adapter_test.cc
+@@ -285,7 +285,7 @@ TEST_P(VideoEncodeAcceleratorAdapterTest, TwoFramesRes
+ 
+   vea()->SetEncodingCallback(base::BindLambdaForTesting(
+       [&](BitstreamBuffer&, bool keyframe, scoped_refptr<VideoFrame> frame) {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+         EXPECT_EQ(frame->format(),
+                   IsYuvPlanar(pixel_format) ? pixel_format : PIXEL_FORMAT_I420);
+ #else
diff --git a/devel/electron11/files/patch-mojo_public_c_system_thunks.cc b/devel/electron12/files/patch-mojo_public_c_system_thunks.cc
similarity index 100%
rename from devel/electron11/files/patch-mojo_public_c_system_thunks.cc
rename to devel/electron12/files/patch-mojo_public_c_system_thunks.cc
diff --git a/devel/electron12/files/patch-mojo_public_js_mojo__bindings__resources.grd b/devel/electron12/files/patch-mojo_public_js_mojo__bindings__resources.grd
new file mode 100644
index 0000000000000000000000000000000000000000..60e44e730342bac831921b4df54183d6c989d902
--- /dev/null
+++ b/devel/electron12/files/patch-mojo_public_js_mojo__bindings__resources.grd
@@ -0,0 +1,11 @@
+--- mojo/public/js/mojo_bindings_resources.grd.orig	2021-04-14 01:08:52 UTC
++++ mojo/public/js/mojo_bindings_resources.grd
+@@ -85,7 +85,7 @@
+           use_base_dir="false"
+           resource_path="mojo/mojo/public/mojom/base/unguessable_token.mojom-webui.js"
+           type="BINDATA" />
+-      <if expr="is_win or is_macosx or is_linux or is_android">
++      <if expr="is_win or is_macosx or is_posix or is_android">
+         <include name="IDR_MOJO_PROCESS_ID_MOJOM_WEBUI_JS"
+             file="${root_gen_dir}/mojom-webui/mojo/public/mojom/base/process_id.mojom-webui.js"
+             use_base_dir="false"
diff --git a/devel/electron11/files/patch-net_BUILD.gn b/devel/electron12/files/patch-net_BUILD.gn
similarity index 79%
rename from devel/electron11/files/patch-net_BUILD.gn
rename to devel/electron12/files/patch-net_BUILD.gn
index b4ccccc46cc1c3d38f547b10334bfe60cb99e0f6..4495600775dd18de6ce2fdef5145420a27983745 100644
--- a/devel/electron11/files/patch-net_BUILD.gn
+++ b/devel/electron12/files/patch-net_BUILD.gn
@@ -1,6 +1,6 @@
---- net/BUILD.gn.orig	2021-01-07 00:36:38 UTC
+--- net/BUILD.gn.orig	2021-04-14 01:08:52 UTC
 +++ net/BUILD.gn
-@@ -99,7 +99,7 @@ net_configs = [
+@@ -100,7 +100,7 @@ net_configs = [
    "//build/config/compiler:wexit_time_destructors",
  ]
  
@@ -9,7 +9,7 @@
    net_configs += [ "//build/config/linux:libresolv" ]
  }
  
-@@ -1261,6 +1261,16 @@ component("net") {
+@@ -1252,6 +1252,16 @@ component("net") {
        ]
      }
  
@@ -26,16 +26,16 @@
      if (is_mac) {
        sources += [
          "base/network_notification_thread_mac.cc",
-@@ -1397,7 +1407,7 @@ component("net") {
+@@ -1388,7 +1398,7 @@ component("net") {
        }
      }
  
--    if (is_android || is_chromeos) {
-+    if (is_android || is_chromeos || is_bsd) {
+-    if (is_android || is_chromeos_ash) {
++    if (is_android || is_chromeos_ash || is_bsd) {
        sources += [
          "base/network_change_notifier_posix.cc",
          "base/network_change_notifier_posix.h",
-@@ -1430,7 +1440,7 @@ component("net") {
+@@ -1421,7 +1431,7 @@ component("net") {
      }
  
      # Use getifaddrs() on POSIX platforms, except Linux.
@@ -44,7 +44,7 @@
        sources += [
          "base/network_interfaces_getifaddrs.cc",
          "base/network_interfaces_getifaddrs.h",
-@@ -4770,7 +4780,7 @@ test("net_unittests") {
+@@ -4755,7 +4765,7 @@ test("net_unittests") {
    }
  
    # Use getifaddrs() on POSIX platforms, except Linux and Android.
diff --git a/devel/electron11/files/patch-net_base_address__tracker__linux.cc b/devel/electron12/files/patch-net_base_address__tracker__linux.cc
similarity index 80%
rename from devel/electron11/files/patch-net_base_address__tracker__linux.cc
rename to devel/electron12/files/patch-net_base_address__tracker__linux.cc
index 65477e680120f462c51db974b9bccd113d1910d3..833971ec1a4a3c452b4c08dffee66d23efe7993a 100644
--- a/devel/electron11/files/patch-net_base_address__tracker__linux.cc
+++ b/devel/electron12/files/patch-net_base_address__tracker__linux.cc
@@ -1,4 +1,4 @@
---- net/base/address_tracker_linux.cc.orig	2021-01-07 00:36:38 UTC
+--- net/base/address_tracker_linux.cc.orig	2021-04-14 01:08:52 UTC
 +++ net/base/address_tracker_linux.cc
 @@ -5,7 +5,9 @@
  #include "net/base/address_tracker_linux.h"
@@ -18,15 +18,18 @@
    netlink_fd_.reset(socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE));
    if (!netlink_fd_.is_valid()) {
      PLOG(ERROR) << "Could not create NETLINK socket";
-@@ -274,6 +277,7 @@ void AddressTrackerLinux::Init() {
+@@ -274,6 +277,10 @@ void AddressTrackerLinux::Init() {
          base::BindRepeating(&AddressTrackerLinux::OnFileCanReadWithoutBlocking,
                              base::Unretained(this)));
    }
++#else  // !OS_FREEBSD
++  NOTIMPLEMENTED();
++  AbortAndForceOnline();
 +#endif // !OS_FREEBSD
  }
  
  void AddressTrackerLinux::AbortAndForceOnline() {
-@@ -285,6 +289,7 @@ void AddressTrackerLinux::AbortAndForceOnline() {
+@@ -285,6 +292,7 @@ void AddressTrackerLinux::AbortAndForceOnline() {
    connection_type_initialized_cv_.Broadcast();
  }
  
@@ -34,7 +37,7 @@
  AddressTrackerLinux::AddressMap AddressTrackerLinux::GetAddressMap() const {
    AddressTrackerAutoLock lock(*this, address_map_lock_);
    return address_map_;
-@@ -303,6 +308,7 @@ bool AddressTrackerLinux::IsInterfaceIgnored(int inter
+@@ -303,6 +311,7 @@ bool AddressTrackerLinux::IsInterfaceIgnored(int inter
    const char* interface_name = get_interface_name_(interface_index, buf);
    return ignored_interfaces_.find(interface_name) != ignored_interfaces_.end();
  }
@@ -42,7 +45,7 @@
  
  NetworkChangeNotifier::ConnectionType
  AddressTrackerLinux::GetCurrentConnectionType() {
-@@ -361,6 +367,7 @@ void AddressTrackerLinux::HandleMessage(const char* bu
+@@ -361,6 +370,7 @@ void AddressTrackerLinux::HandleMessage(const char* bu
                                          bool* address_changed,
                                          bool* link_changed,
                                          bool* tunnel_changed) {
@@ -50,18 +53,17 @@
    DCHECK(buffer);
    // Note that NLMSG_NEXT decrements |length| to reflect the number of bytes
    // remaining in |buffer|.
-@@ -473,6 +480,10 @@ void AddressTrackerLinux::HandleMessage(const char* bu
+@@ -473,6 +483,9 @@ void AddressTrackerLinux::HandleMessage(const char* bu
          break;
      }
    }
 +#else  // !OS_FREEBSD
 +  NOTIMPLEMENTED();
-+  AbortAndForceOnline();
 +#endif // !OS_FREEBSD
  }
  
  void AddressTrackerLinux::OnFileCanReadWithoutBlocking() {
-@@ -500,6 +511,7 @@ bool AddressTrackerLinux::IsTunnelInterfaceName(const 
+@@ -500,6 +513,7 @@ bool AddressTrackerLinux::IsTunnelInterfaceName(const 
  }
  
  void AddressTrackerLinux::UpdateCurrentConnectionType() {
@@ -69,7 +71,7 @@
    AddressTrackerLinux::AddressMap address_map = GetAddressMap();
    std::unordered_set<int> online_links = GetOnlineLinks();
  
-@@ -525,6 +537,9 @@ void AddressTrackerLinux::UpdateCurrentConnectionType(
+@@ -525,6 +539,9 @@ void AddressTrackerLinux::UpdateCurrentConnectionType(
  
    AddressTrackerAutoLock lock(*this, connection_type_lock_);
    current_connection_type_ = type;
diff --git a/devel/electron11/files/patch-net_base_address__tracker__linux.h b/devel/electron12/files/patch-net_base_address__tracker__linux.h
similarity index 100%
rename from devel/electron11/files/patch-net_base_address__tracker__linux.h
rename to devel/electron12/files/patch-net_base_address__tracker__linux.h
diff --git a/devel/electron11/files/patch-net_base_address__tracker__linux__unittest.cc b/devel/electron12/files/patch-net_base_address__tracker__linux__unittest.cc
similarity index 100%
rename from devel/electron11/files/patch-net_base_address__tracker__linux__unittest.cc
rename to devel/electron12/files/patch-net_base_address__tracker__linux__unittest.cc
diff --git a/devel/electron12/files/patch-net_base_network__change__notifier.cc b/devel/electron12/files/patch-net_base_network__change__notifier.cc
new file mode 100644
index 0000000000000000000000000000000000000000..f8dc53ace48b4265b362e112b33040f2c2a74215
--- /dev/null
+++ b/devel/electron12/files/patch-net_base_network__change__notifier.cc
@@ -0,0 +1,20 @@
+--- net/base/network_change_notifier.cc.orig	2021-04-14 01:08:52 UTC
++++ net/base/network_change_notifier.cc
+@@ -38,7 +38,7 @@
+ #include "net/base/network_change_notifier_linux.h"
+ #elif defined(OS_APPLE)
+ #include "net/base/network_change_notifier_mac.h"
+-#elif BUILDFLAG(IS_CHROMEOS_ASH) || defined(OS_ANDROID)
++#elif BUILDFLAG(IS_CHROMEOS_ASH) || defined(OS_ANDROID) || defined(OS_BSD)
+ #include "net/base/network_change_notifier_posix.h"
+ #elif defined(OS_FUCHSIA)
+ #include "net/base/network_change_notifier_fuchsia.h"
+@@ -241,7 +241,7 @@ std::unique_ptr<NetworkChangeNotifier> NetworkChangeNo
+   // service in a separate process.
+   return std::make_unique<NetworkChangeNotifierPosix>(initial_type,
+                                                       initial_subtype);
+-#elif BUILDFLAG(IS_CHROMEOS_ASH)
++#elif BUILDFLAG(IS_CHROMEOS_ASH) || defined(OS_BSD)
+   return std::make_unique<NetworkChangeNotifierPosix>(initial_type,
+                                                       initial_subtype);
+ #elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
diff --git a/devel/electron12/files/patch-net_base_network__change__notifier__posix.cc b/devel/electron12/files/patch-net_base_network__change__notifier__posix.cc
new file mode 100644
index 0000000000000000000000000000000000000000..71e5800aa660ac6b83af48bb1410d1d845596e14
--- /dev/null
+++ b/devel/electron12/files/patch-net_base_network__change__notifier__posix.cc
@@ -0,0 +1,11 @@
+--- net/base/network_change_notifier_posix.cc.orig	2021-04-14 01:08:52 UTC
++++ net/base/network_change_notifier_posix.cc
+@@ -93,7 +93,7 @@ void NetworkChangeNotifierPosix::GetCurrentMaxBandwidt
+ NetworkChangeNotifier::NetworkChangeCalculatorParams
+ NetworkChangeNotifierPosix::NetworkChangeCalculatorParamsPosix() {
+   NetworkChangeCalculatorParams params;
+-#if BUILDFLAG(IS_CHROMEOS_ASH)
++#if BUILDFLAG(IS_CHROMEOS_ASH) || defined(OS_BSD)
+   // Delay values arrived at by simple experimentation and adjusted so as to
+   // produce a single signal when switching between network connections.
+   params.ip_address_offline_delay_ = base::TimeDelta::FromMilliseconds(4000);
diff --git a/devel/electron12/files/patch-net_base_network__interfaces__posix.cc b/devel/electron12/files/patch-net_base_network__interfaces__posix.cc
new file mode 100644
index 0000000000000000000000000000000000000000..7e9828361f1147636429b124b8911b3323dde5aa
--- /dev/null
+++ b/devel/electron12/files/patch-net_base_network__interfaces__posix.cc
@@ -0,0 +1,17 @@
+--- net/base/network_interfaces_posix.cc.orig	2021-04-14 01:08:52 UTC
++++ net/base/network_interfaces_posix.cc
+@@ -4,8 +4,14 @@
+ 
+ #include "net/base/network_interfaces_posix.h"
+ 
++#include "build/build_config.h"
++
+ #include <netinet/in.h>
+ #include <sys/types.h>
++
++#if defined(OS_BSD)
++#include <sys/socket.h>
++#endif
+ 
+ #include <memory>
+ #include <set>
diff --git a/devel/electron11/files/patch-net_cert_cert__verifier.cc b/devel/electron12/files/patch-net_cert_cert__verifier.cc
similarity index 100%
rename from devel/electron11/files/patch-net_cert_cert__verifier.cc
rename to devel/electron12/files/patch-net_cert_cert__verifier.cc
diff --git a/devel/electron11/files/patch-net_cert_cert__verify__proc.cc b/devel/electron12/files/patch-net_cert_cert__verify__proc.cc
similarity index 100%
rename from devel/electron11/files/patch-net_cert_cert__verify__proc.cc
rename to devel/electron12/files/patch-net_cert_cert__verify__proc.cc
diff --git a/devel/electron11/files/patch-net_cert_cert__verify__proc.h b/devel/electron12/files/patch-net_cert_cert__verify__proc.h
similarity index 100%
rename from devel/electron11/files/patch-net_cert_cert__verify__proc.h
rename to devel/electron12/files/patch-net_cert_cert__verify__proc.h
diff --git a/devel/electron11/files/patch-net_cert_test__root__certs.h b/devel/electron12/files/patch-net_cert_test__root__certs.h
similarity index 100%
rename from devel/electron11/files/patch-net_cert_test__root__certs.h
rename to devel/electron12/files/patch-net_cert_test__root__certs.h
diff --git a/devel/electron11/files/patch-net_disk__cache_blockfile_disk__format.h b/devel/electron12/files/patch-net_disk__cache_blockfile_disk__format.h
similarity index 100%
rename from devel/electron11/files/patch-net_disk__cache_blockfile_disk__format.h
rename to devel/electron12/files/patch-net_disk__cache_blockfile_disk__format.h
diff --git a/devel/electron11/files/patch-net_dns_address__sorter__posix.cc b/devel/electron12/files/patch-net_dns_address__sorter__posix.cc
similarity index 100%
rename from devel/electron11/files/patch-net_dns_address__sorter__posix.cc
rename to devel/electron12/files/patch-net_dns_address__sorter__posix.cc
diff --git a/devel/electron11/files/patch-net_dns_dns__config__service__posix__unittest.cc b/devel/electron12/files/patch-net_dns_dns__config__service__posix__unittest.cc
similarity index 100%
rename from devel/electron11/files/patch-net_dns_dns__config__service__posix__unittest.cc
rename to devel/electron12/files/patch-net_dns_dns__config__service__posix__unittest.cc
diff --git a/devel/electron11/files/patch-net_dns_dns__reloader.cc b/devel/electron12/files/patch-net_dns_dns__reloader.cc
similarity index 100%
rename from devel/electron11/files/patch-net_dns_dns__reloader.cc
rename to devel/electron12/files/patch-net_dns_dns__reloader.cc
diff --git a/devel/electron12/files/patch-net_dns_dns__util.cc b/devel/electron12/files/patch-net_dns_dns__util.cc
new file mode 100644
index 0000000000000000000000000000000000000000..c3f42d76bee39ca92e2a2874da1b9d7f643db54f
--- /dev/null
+++ b/devel/electron12/files/patch-net_dns_dns__util.cc
@@ -0,0 +1,11 @@
+--- net/dns/dns_util.cc.orig	2021-04-14 01:08:52 UTC
++++ net/dns/dns_util.cc
+@@ -28,6 +28,8 @@
+ #include "net/third_party/uri_template/uri_template.h"
+ #include "url/url_canon.h"
+ 
++#include <sys/socket.h>
++
+ #if defined(OS_POSIX)
+ #include <netinet/in.h>
+ #if !defined(OS_NACL)
diff --git a/devel/electron11/files/patch-net_dns_host__resolver__proc.cc b/devel/electron12/files/patch-net_dns_host__resolver__proc.cc
similarity index 100%
rename from devel/electron11/files/patch-net_dns_host__resolver__proc.cc
rename to devel/electron12/files/patch-net_dns_host__resolver__proc.cc
diff --git a/devel/electron11/files/patch-net_http_http__auth__gssapi__posix.cc b/devel/electron12/files/patch-net_http_http__auth__gssapi__posix.cc
similarity index 100%
rename from devel/electron11/files/patch-net_http_http__auth__gssapi__posix.cc
rename to devel/electron12/files/patch-net_http_http__auth__gssapi__posix.cc
diff --git a/devel/electron11/files/patch-net_http_http__auth__gssapi__posix.h b/devel/electron12/files/patch-net_http_http__auth__gssapi__posix.h
similarity index 100%
rename from devel/electron11/files/patch-net_http_http__auth__gssapi__posix.h
rename to devel/electron12/files/patch-net_http_http__auth__gssapi__posix.h
diff --git a/devel/electron11/files/patch-net_nqe_network__quality__estimator.cc b/devel/electron12/files/patch-net_nqe_network__quality__estimator.cc
similarity index 76%
rename from devel/electron11/files/patch-net_nqe_network__quality__estimator.cc
rename to devel/electron12/files/patch-net_nqe_network__quality__estimator.cc
index 08ddfa294a22926fef11cd9690739f0b3834a709..074a96e407fa5110f31f51eebd2868cfa2591b38 100644
--- a/devel/electron11/files/patch-net_nqe_network__quality__estimator.cc
+++ b/devel/electron12/files/patch-net_nqe_network__quality__estimator.cc
@@ -1,6 +1,6 @@
---- net/nqe/network_quality_estimator.cc.orig	2021-01-07 00:36:38 UTC
+--- net/nqe/network_quality_estimator.cc.orig	2021-04-14 01:08:53 UTC
 +++ net/nqe/network_quality_estimator.cc
-@@ -108,7 +108,7 @@ nqe::internal::NetworkID DoGetCurrentNetworkID(
+@@ -109,7 +109,7 @@ nqe::internal::NetworkID DoGetCurrentNetworkID(
        case NetworkChangeNotifier::ConnectionType::CONNECTION_ETHERNET:
          break;
        case NetworkChangeNotifier::ConnectionType::CONNECTION_WIFI:
diff --git a/devel/electron12/files/patch-net_nqe_network__quality__estimator__unittest.cc b/devel/electron12/files/patch-net_nqe_network__quality__estimator__unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..18122ef0900d48dcc761110b01d506ccf78e774b
--- /dev/null
+++ b/devel/electron12/files/patch-net_nqe_network__quality__estimator__unittest.cc
@@ -0,0 +1,15 @@
+--- net/nqe/network_quality_estimator_unittest.cc.orig	2021-04-14 01:08:53 UTC
++++ net/nqe/network_quality_estimator_unittest.cc
+@@ -2180,9 +2180,9 @@ TEST_F(NetworkQualityEstimatorTest, TestGlobalSocketWa
+ // ChromeOS is disabled due to crbug.com/986904
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if (defined(TCP_INFO) ||                                    \
+-     (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || \
+-     defined(OS_ANDROID)) &&                                 \
++#if (defined(TCP_INFO) ||                                                       \
++     (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD) || \
++     defined(OS_ANDROID)) &&                                                    \
+     !defined(OS_CHROMEOS)
+ #define MAYBE_TestTCPSocketRTT TestTCPSocketRTT
+ #else
diff --git a/devel/electron11/files/patch-net_proxy__resolution_configured__proxy__resolution__service.cc b/devel/electron12/files/patch-net_proxy__resolution_configured__proxy__resolution__service.cc
similarity index 52%
rename from devel/electron11/files/patch-net_proxy__resolution_configured__proxy__resolution__service.cc
rename to devel/electron12/files/patch-net_proxy__resolution_configured__proxy__resolution__service.cc
index 8f8bab7b69c9d469453cdefcd48d7024cf3e1c0a..214b3d984c8a49673faff89d460c4b770d48bf28 100644
--- a/devel/electron11/files/patch-net_proxy__resolution_configured__proxy__resolution__service.cc
+++ b/devel/electron12/files/patch-net_proxy__resolution_configured__proxy__resolution__service.cc
@@ -1,29 +1,29 @@
---- net/proxy_resolution/configured_proxy_resolution_service.cc.orig	2021-01-07 00:36:38 UTC
+--- net/proxy_resolution/configured_proxy_resolution_service.cc.orig	2021-04-14 01:08:53 UTC
 +++ net/proxy_resolution/configured_proxy_resolution_service.cc
-@@ -46,7 +46,7 @@
- #elif defined(OS_MAC)
- #include "net/proxy_resolution/proxy_config_service_mac.h"
+@@ -50,7 +50,7 @@
  #include "net/proxy_resolution/proxy_resolver_mac.h"
--#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
  #include "net/proxy_resolution/proxy_config_service_linux.h"
  #elif defined(OS_ANDROID)
  #include "net/proxy_resolution/proxy_config_service_android.h"
-@@ -60,7 +60,7 @@ namespace net {
- namespace {
- 
+@@ -66,7 +66,7 @@ namespace {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
  #if defined(OS_WIN) || defined(OS_APPLE) || \
--    (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+-    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++    (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_BSD)
  constexpr net::NetworkTrafficAnnotationTag kSystemProxyConfigTrafficAnnotation =
      net::DefineNetworkTrafficAnnotation("proxy_config_system", R"(
        semantics {
-@@ -1408,7 +1408,7 @@ ConfiguredProxyResolutionService::CreateSystemProxyCon
+@@ -1413,7 +1413,7 @@ ConfiguredProxyResolutionService::CreateSystemProxyCon
               << "profile_io_data.cc::CreateProxyConfigService and this should "
               << "be used only for examples.";
    return std::make_unique<UnsetProxyConfigService>();
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
    std::unique_ptr<ProxyConfigServiceLinux> linux_config_service(
        new ProxyConfigServiceLinux());
  
diff --git a/devel/electron11/files/patch-net_proxy__resolution_proxy__config__service__linux.cc b/devel/electron12/files/patch-net_proxy__resolution_proxy__config__service__linux.cc
similarity index 100%
rename from devel/electron11/files/patch-net_proxy__resolution_proxy__config__service__linux.cc
rename to devel/electron12/files/patch-net_proxy__resolution_proxy__config__service__linux.cc
diff --git a/devel/electron11/files/patch-net_socket_socket__posix.cc b/devel/electron12/files/patch-net_socket_socket__posix.cc
similarity index 100%
rename from devel/electron11/files/patch-net_socket_socket__posix.cc
rename to devel/electron12/files/patch-net_socket_socket__posix.cc
diff --git a/devel/electron11/files/patch-net_socket_socks5__client__socket.cc b/devel/electron12/files/patch-net_socket_socks5__client__socket.cc
similarity index 100%
rename from devel/electron11/files/patch-net_socket_socks5__client__socket.cc
rename to devel/electron12/files/patch-net_socket_socks5__client__socket.cc
diff --git a/devel/electron11/files/patch-net_socket_tcp__socket__posix.cc b/devel/electron12/files/patch-net_socket_tcp__socket__posix.cc
similarity index 100%
rename from devel/electron11/files/patch-net_socket_tcp__socket__posix.cc
rename to devel/electron12/files/patch-net_socket_tcp__socket__posix.cc
diff --git a/devel/electron11/files/patch-net_socket_udp__socket__posix.cc b/devel/electron12/files/patch-net_socket_udp__socket__posix.cc
similarity index 88%
rename from devel/electron11/files/patch-net_socket_udp__socket__posix.cc
rename to devel/electron12/files/patch-net_socket_udp__socket__posix.cc
index 00d90ce97a395fb50b5a08097027bcc856344052..9c52b091d238346a412a3ad11e60ea3c72662cef 100644
--- a/devel/electron11/files/patch-net_socket_udp__socket__posix.cc
+++ b/devel/electron12/files/patch-net_socket_udp__socket__posix.cc
@@ -1,6 +1,6 @@
---- net/socket/udp_socket_posix.cc.orig	2021-01-07 00:36:39 UTC
+--- net/socket/udp_socket_posix.cc.orig	2021-04-14 01:08:53 UTC
 +++ net/socket/udp_socket_posix.cc
-@@ -70,6 +70,32 @@ const int kActivityMonitorMinimumSamplesForThroughputE
+@@ -71,6 +71,32 @@ const int kActivityMonitorMinimumSamplesForThroughputE
  const base::TimeDelta kActivityMonitorMsThreshold =
      base::TimeDelta::FromMilliseconds(100);
  
@@ -33,7 +33,7 @@
  #if defined(OS_MAC)
  
  // On OSX the file descriptor is guarded to detect the cause of
-@@ -622,13 +648,13 @@ int UDPSocketPosix::SetDoNotFragment() {
+@@ -623,13 +649,13 @@ int UDPSocketPosix::SetDoNotFragment() {
  }
  
  void UDPSocketPosix::SetMsgConfirm(bool confirm) {
@@ -49,7 +49,7 @@
  }
  
  int UDPSocketPosix::AllowAddressReuse() {
-@@ -917,7 +943,11 @@ int UDPSocketPosix::SetMulticastOptions() {
+@@ -918,7 +944,11 @@ int UDPSocketPosix::SetMulticastOptions() {
          mreq.imr_ifindex = multicast_interface_;
          mreq.imr_address.s_addr = htonl(INADDR_ANY);
          int rv = setsockopt(socket_, IPPROTO_IP, IP_MULTICAST_IF,
@@ -61,7 +61,7 @@
          if (rv)
            return MapSystemError(errno);
          break;
-@@ -1018,9 +1048,18 @@ int UDPSocketPosix::LeaveGroup(const IPAddress& group_
+@@ -1019,9 +1049,18 @@ int UDPSocketPosix::LeaveGroup(const IPAddress& group_
      case IPAddress::kIPv4AddressSize: {
        if (addr_family_ != AF_INET)
          return ERR_ADDRESS_INVALID;
diff --git a/devel/electron11/files/patch-net_socket_udp__socket__posix.h b/devel/electron12/files/patch-net_socket_udp__socket__posix.h
similarity index 100%
rename from devel/electron11/files/patch-net_socket_udp__socket__posix.h
rename to devel/electron12/files/patch-net_socket_udp__socket__posix.h
diff --git a/devel/electron11/files/patch-net_socket_unix__domain__client__socket__posix.cc b/devel/electron12/files/patch-net_socket_unix__domain__client__socket__posix.cc
similarity index 100%
rename from devel/electron11/files/patch-net_socket_unix__domain__client__socket__posix.cc
rename to devel/electron12/files/patch-net_socket_unix__domain__client__socket__posix.cc
diff --git a/devel/electron11/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc b/devel/electron12/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc
similarity index 100%
rename from devel/electron11/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc
rename to devel/electron12/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc
diff --git a/devel/electron11/files/patch-net_tools_quic_quic__http__proxy__backend.cc b/devel/electron12/files/patch-net_tools_quic_quic__http__proxy__backend.cc
similarity index 100%
rename from devel/electron11/files/patch-net_tools_quic_quic__http__proxy__backend.cc
rename to devel/electron12/files/patch-net_tools_quic_quic__http__proxy__backend.cc
diff --git a/devel/electron11/files/patch-net_traffic__annotation_network__traffic__annotation.h b/devel/electron12/files/patch-net_traffic__annotation_network__traffic__annotation.h
similarity index 60%
rename from devel/electron11/files/patch-net_traffic__annotation_network__traffic__annotation.h
rename to devel/electron12/files/patch-net_traffic__annotation_network__traffic__annotation.h
index ce5dc88b87caa72df795b5ab1ceaa55da98cd201..e74192a357d0487853732dbc2a6b23896a561124 100644
--- a/devel/electron11/files/patch-net_traffic__annotation_network__traffic__annotation.h
+++ b/devel/electron12/files/patch-net_traffic__annotation_network__traffic__annotation.h
@@ -1,6 +1,6 @@
---- net/traffic_annotation/network_traffic_annotation.h.orig	2021-01-07 00:36:39 UTC
+--- net/traffic_annotation/network_traffic_annotation.h.orig	2021-04-14 01:08:53 UTC
 +++ net/traffic_annotation/network_traffic_annotation.h
-@@ -359,7 +359,7 @@ struct MutablePartialNetworkTrafficAnnotationTag {
+@@ -360,7 +360,7 @@ struct MutablePartialNetworkTrafficAnnotationTag {
  }  // namespace net
  
  // Placeholder for unannotated usages.
@@ -9,12 +9,12 @@
  #define TRAFFIC_ANNOTATION_WITHOUT_PROTO(ANNOTATION_ID) \
    net::DefineNetworkTrafficAnnotation(ANNOTATION_ID, "No proto yet.")
  #endif
-@@ -370,7 +370,7 @@ struct MutablePartialNetworkTrafficAnnotationTag {
- //
- // On Linux and Windows, use MISSING_TRAFFIC_ANNOTATION or
+@@ -373,7 +373,7 @@ struct MutablePartialNetworkTrafficAnnotationTag {
  // TRAFFIC_ANNOTATION_FOR_TESTS.
--#if (!defined(OS_WIN) && !defined(OS_LINUX)) || defined(OS_CHROMEOS)
-+#if (!defined(OS_WIN) && !defined(OS_LINUX) && !defined(OS_BSD)) || defined(OS_CHROMEOS)
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if !defined(OS_WIN) && !(defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if !defined(OS_WIN) && !(defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
+ 
  #define NO_TRAFFIC_ANNOTATION_YET \
    net::DefineNetworkTrafficAnnotation("undefined", "Nothing here yet.")
- 
diff --git a/devel/electron12/files/patch-net_url__request_url__fetcher.cc b/devel/electron12/files/patch-net_url__request_url__fetcher.cc
new file mode 100644
index 0000000000000000000000000000000000000000..62b8a8b8e06f5b0c0eff1d678d011a45fc073012
--- /dev/null
+++ b/devel/electron12/files/patch-net_url__request_url__fetcher.cc
@@ -0,0 +1,11 @@
+--- net/url_request/url_fetcher.cc.orig	2021-04-14 01:08:53 UTC
++++ net/url_request/url_fetcher.cc
+@@ -24,7 +24,7 @@ void URLFetcher::SetIgnoreCertificateRequests(bool ign
+ 
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if !defined(OS_WIN) && !(defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if !defined(OS_WIN) && !(defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
+ // static
+ std::unique_ptr<URLFetcher> URLFetcher::Create(
+     const GURL& url,
diff --git a/devel/electron12/files/patch-net_url__request_url__fetcher.h b/devel/electron12/files/patch-net_url__request_url__fetcher.h
new file mode 100644
index 0000000000000000000000000000000000000000..24624086a0f2f0bd88fd6a5bc99c9952e72a8b7e
--- /dev/null
+++ b/devel/electron12/files/patch-net_url__request_url__fetcher.h
@@ -0,0 +1,13 @@
+--- net/url_request/url_fetcher.h.orig	2021-04-14 01:08:53 UTC
++++ net/url_request/url_fetcher.h
+@@ -352,8 +352,8 @@ class NET_EXPORT URLFetcher {
+   // annotations on Linux & Windows.
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if (!defined(OS_WIN) &&                                       \
+-     !(defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))) || \
++#if (!defined(OS_WIN) &&                                                          \
++     !(defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))) || \
+     defined(OS_CHROMEOS)
+   // |url| is the URL to send the request to. It must be valid.
+   // |request_type| is the type of request to make.
diff --git a/devel/electron12/files/patch-net_url__request_url__request__context.cc b/devel/electron12/files/patch-net_url__request_url__request__context.cc
new file mode 100644
index 0000000000000000000000000000000000000000..d61a92aae2880e866725917751563fe2d9c37b85
--- /dev/null
+++ b/devel/electron12/files/patch-net_url__request_url__request__context.cc
@@ -0,0 +1,11 @@
+--- net/url_request/url_request_context.cc.orig	2021-04-14 01:08:53 UTC
++++ net/url_request/url_request_context.cc
+@@ -93,7 +93,7 @@ const HttpNetworkSession::Context* URLRequestContext::
+ 
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if !defined(OS_WIN) && !(defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if !defined(OS_WIN) && !(defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
+ std::unique_ptr<URLRequest> URLRequestContext::CreateRequest(
+     const GURL& url,
+     RequestPriority priority,
diff --git a/devel/electron12/files/patch-net_url__request_url__request__context.h b/devel/electron12/files/patch-net_url__request_url__request__context.h
new file mode 100644
index 0000000000000000000000000000000000000000..a79e650911216b1059d9840907ede30b54e33d11
--- /dev/null
+++ b/devel/electron12/files/patch-net_url__request_url__request__context.h
@@ -0,0 +1,11 @@
+--- net/url_request/url_request_context.h.orig	2021-04-14 01:08:53 UTC
++++ net/url_request/url_request_context.h
+@@ -85,7 +85,7 @@ class NET_EXPORT URLRequestContext
+ 
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if !defined(OS_WIN) && !(defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if !defined(OS_WIN) && !(defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
+   // This function should not be used in Chromium, please use the version with
+   // NetworkTrafficAnnotationTag in the future.
+   //
diff --git a/devel/electron11/files/patch-net_url__request_url__request__context__builder.cc b/devel/electron12/files/patch-net_url__request_url__request__context__builder.cc
similarity index 82%
rename from devel/electron11/files/patch-net_url__request_url__request__context__builder.cc
rename to devel/electron12/files/patch-net_url__request_url__request__context__builder.cc
index a9c21ee5a4dd758f0e382f694c105e8d1e7d2f7f..f7703d81213fca0c01d3c7aa71924f64036016ea 100644
--- a/devel/electron11/files/patch-net_url__request_url__request__context__builder.cc
+++ b/devel/electron12/files/patch-net_url__request_url__request__context__builder.cc
@@ -1,6 +1,6 @@
---- net/url_request/url_request_context_builder.cc.orig	2021-01-07 00:36:39 UTC
+--- net/url_request/url_request_context_builder.cc.orig	2021-04-14 01:08:53 UTC
 +++ net/url_request/url_request_context_builder.cc
-@@ -497,7 +497,7 @@ std::unique_ptr<URLRequestContext> URLRequestContextBu
+@@ -484,7 +484,7 @@ std::unique_ptr<URLRequestContext> URLRequestContextBu
    }
  
    if (!proxy_resolution_service_) {
@@ -9,7 +9,7 @@
      // TODO(willchan): Switch to using this code when
      // ConfiguredProxyResolutionService::CreateSystemProxyConfigService()'s
      // signature doesn't suck.
-@@ -506,7 +506,7 @@ std::unique_ptr<URLRequestContext> URLRequestContextBu
+@@ -493,7 +493,7 @@ std::unique_ptr<URLRequestContext> URLRequestContextBu
            ConfiguredProxyResolutionService::CreateSystemProxyConfigService(
                base::ThreadTaskRunnerHandle::Get().get());
      }
diff --git a/devel/electron11/files/patch-pdf_pdfium_pdfium__engine.cc b/devel/electron12/files/patch-pdf_pdfium_pdfium__engine.cc
similarity index 80%
rename from devel/electron11/files/patch-pdf_pdfium_pdfium__engine.cc
rename to devel/electron12/files/patch-pdf_pdfium_pdfium__engine.cc
index 61f97a43a7200de8b10ba61adcb009954581bcb2..7bc9ba2b9dad17e4d427167b8ec9515d5b886c4a 100644
--- a/devel/electron11/files/patch-pdf_pdfium_pdfium__engine.cc
+++ b/devel/electron12/files/patch-pdf_pdfium_pdfium__engine.cc
@@ -1,6 +1,6 @@
---- pdf/pdfium/pdfium_engine.cc.orig	2021-01-07 00:36:39 UTC
+--- pdf/pdfium/pdfium_engine.cc.orig	2021-04-14 01:08:53 UTC
 +++ pdf/pdfium/pdfium_engine.cc
-@@ -69,7 +69,7 @@
+@@ -71,7 +71,7 @@
  #include "ui/gfx/geometry/vector2d.h"
  #include "v8/include/v8.h"
  
@@ -9,7 +9,7 @@
  #include "pdf/pdfium/pdfium_font_linux.h"
  #endif
  
-@@ -416,7 +416,7 @@ void InitializeSDK(bool enable_v8) {
+@@ -468,7 +468,7 @@ void InitializeSDK(bool enable_v8) {
  
    FPDF_InitLibraryWithConfig(&config);
  
@@ -18,7 +18,7 @@
    InitializeLinuxFontMapper();
  #endif
  
-@@ -475,7 +475,7 @@ PDFiumEngine::PDFiumEngine(PDFEngine::Client* client,
+@@ -527,7 +527,7 @@ PDFiumEngine::PDFiumEngine(PDFEngine::Client* client,
    IFSDK_PAUSE::user = nullptr;
    IFSDK_PAUSE::NeedToPauseNow = Pause_NeedToPauseNow;
  
@@ -27,7 +27,7 @@
    // PreviewModeClient does not know its pp::Instance.
    SetLastInstance(client_->GetPluginInstance());
  #endif
-@@ -948,7 +948,7 @@ pp::Buffer_Dev PDFiumEngine::PrintPagesAsRasterPdf(
+@@ -992,7 +992,7 @@ pp::Buffer_Dev PDFiumEngine::PrintPagesAsRasterPdf(
  
    KillFormFocus();
  
@@ -36,7 +36,7 @@
    SetLastInstance(client_->GetPluginInstance());
  #endif
  
-@@ -3042,7 +3042,7 @@ bool PDFiumEngine::ContinuePaint(int progressive_index
+@@ -3123,7 +3123,7 @@ bool PDFiumEngine::ContinuePaint(int progressive_index
    DCHECK_LT(static_cast<size_t>(progressive_index), progressive_paints_.size());
  
    last_progressive_start_time_ = base::Time::Now();
@@ -45,7 +45,7 @@
    SetLastInstance(client_->GetPluginInstance());
  #endif
  
-@@ -3529,7 +3529,7 @@ void PDFiumEngine::SetCurrentPage(int index) {
+@@ -3610,7 +3610,7 @@ void PDFiumEngine::SetCurrentPage(int index) {
      FORM_DoPageAAction(old_page, form(), FPDFPAGE_AACTION_CLOSE);
    }
    most_visible_page_ = index;
diff --git a/devel/electron11/files/patch-ppapi_proxy_file__io__resource.cc b/devel/electron12/files/patch-ppapi_proxy_file__io__resource.cc
similarity index 100%
rename from devel/electron11/files/patch-ppapi_proxy_file__io__resource.cc
rename to devel/electron12/files/patch-ppapi_proxy_file__io__resource.cc
diff --git a/devel/electron11/files/patch-printing_cups__config__helper.py b/devel/electron12/files/patch-printing_cups__config__helper.py
similarity index 100%
rename from devel/electron11/files/patch-printing_cups__config__helper.py
rename to devel/electron12/files/patch-printing_cups__config__helper.py
diff --git a/devel/electron11/files/patch-printing_print__settings.cc b/devel/electron12/files/patch-printing_print__settings.cc
similarity index 74%
rename from devel/electron11/files/patch-printing_print__settings.cc
rename to devel/electron12/files/patch-printing_print__settings.cc
index 8c1d3179ad507c0325c7501960737d9ec8874700..486a5325f76460f11c45b7ae3cf2ac9c8bc508ff 100644
--- a/devel/electron11/files/patch-printing_print__settings.cc
+++ b/devel/electron12/files/patch-printing_print__settings.cc
@@ -1,6 +1,6 @@
---- printing/print_settings.cc.orig	2021-01-07 00:36:39 UTC
+--- printing/print_settings.cc.orig	2021-04-14 01:08:53 UTC
 +++ printing/print_settings.cc
-@@ -277,9 +277,9 @@ void PrintSettings::Clear() {
+@@ -278,9 +278,9 @@ void PrintSettings::Clear() {
  #endif
    is_modifiable_ = true;
    pages_per_sheet_ = 1;
@@ -9,6 +9,6 @@
    advanced_settings_.clear();
 -#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
 +#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
- #if defined(OS_CHROMEOS)
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
    send_user_info_ = false;
    username_.clear();
diff --git a/devel/electron11/files/patch-printing_print__settings.h b/devel/electron12/files/patch-printing_print__settings.h
similarity index 84%
rename from devel/electron11/files/patch-printing_print__settings.h
rename to devel/electron12/files/patch-printing_print__settings.h
index 75a2310375d5181248eced22c0697351b64b4f22..8428026abd223ed958619f6c70b31457f160e8f8 100644
--- a/devel/electron11/files/patch-printing_print__settings.h
+++ b/devel/electron12/files/patch-printing_print__settings.h
@@ -1,6 +1,6 @@
---- printing/print_settings.h.orig	2021-01-07 00:36:39 UTC
+--- printing/print_settings.h.orig	2021-04-14 01:08:53 UTC
 +++ printing/print_settings.h
-@@ -19,11 +19,11 @@
+@@ -20,11 +20,11 @@
  #include "ui/gfx/geometry/rect.h"
  #include "ui/gfx/geometry/size.h"
  
@@ -14,7 +14,7 @@
  
  namespace printing {
  
-@@ -80,9 +80,9 @@ class PRINTING_EXPORT PrintSettings {
+@@ -81,9 +81,9 @@ class PRINTING_EXPORT PrintSettings {
      }
    };
  
@@ -26,7 +26,7 @@
  
    PrintSettings();
    PrintSettings(const PrintSettings&) = delete;
-@@ -221,12 +221,12 @@ class PRINTING_EXPORT PrintSettings {
+@@ -222,12 +222,12 @@ class PRINTING_EXPORT PrintSettings {
      pages_per_sheet_ = pages_per_sheet;
    }
  
@@ -39,9 +39,9 @@
 -#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
 +#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
- #if defined(OS_CHROMEOS)
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
    void set_send_user_info(bool send_user_info) {
-@@ -320,10 +320,10 @@ class PRINTING_EXPORT PrintSettings {
+@@ -321,10 +321,10 @@ class PRINTING_EXPORT PrintSettings {
    // Number of pages per sheet.
    int pages_per_sheet_;
  
@@ -52,5 +52,5 @@
 -#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
 +#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
- #if defined(OS_CHROMEOS)
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
    // Whether to send user info.
diff --git a/devel/electron12/files/patch-printing_print__settings__conversion.cc b/devel/electron12/files/patch-printing_print__settings__conversion.cc
new file mode 100644
index 0000000000000000000000000000000000000000..95d5ff4f4717ed71769fe20d7f2ecf061068f0f6
--- /dev/null
+++ b/devel/electron12/files/patch-printing_print__settings__conversion.cc
@@ -0,0 +1,22 @@
+--- printing/print_settings_conversion.cc.orig	2021-04-14 01:08:53 UTC
++++ printing/print_settings_conversion.cc
+@@ -213,8 +213,8 @@ std::unique_ptr<PrintSettings> PrintSettingsFromJobSet
+ 
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
+-#if defined(OS_CHROMEOS) ||                                  \
+-    ((defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) && \
++#if defined(OS_CHROMEOS) ||                                                     \
++    ((defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)) && \
+      defined(USE_CUPS))
+   const base::Value* advanced_settings =
+       job_settings.FindDictKey(kSettingAdvancedSettings);
+@@ -222,7 +222,7 @@ std::unique_ptr<PrintSettings> PrintSettingsFromJobSet
+     for (const auto& item : advanced_settings->DictItems())
+       settings->advanced_settings().emplace(item.first, item.second.Clone());
+   }
+-#endif  // defined(OS_CHROMEOS) || ((defined(OS_LINUX) ||
++#endif  // defined(OS_CHROMEOS) || ((defined(OS_LINUX) || defined(OS_BSD) ||
+         // BUILDFLAG(IS_CHROMEOS_LACROS)) && defined(USE_CUPS))
+ 
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
diff --git a/devel/electron11/files/patch-printing_printing__features.cc b/devel/electron12/files/patch-printing_printing__features.cc
similarity index 84%
rename from devel/electron11/files/patch-printing_printing__features.cc
rename to devel/electron12/files/patch-printing_printing__features.cc
index 2ee13e4446096b17eef138805c2416f58de9b783..779ba39435c1584a3cb1dd15440e02aa4679b252 100644
--- a/devel/electron11/files/patch-printing_printing__features.cc
+++ b/devel/electron12/files/patch-printing_printing__features.cc
@@ -1,6 +1,6 @@
---- printing/printing_features.cc.orig	2021-01-07 00:36:39 UTC
+--- printing/printing_features.cc.orig	2021-04-14 01:08:53 UTC
 +++ printing/printing_features.cc
-@@ -47,13 +47,13 @@ bool ShouldPrintUsingXps(bool source_is_pdf) {
+@@ -49,13 +49,13 @@ bool ShouldPrintUsingXps(bool source_is_pdf) {
  }
  #endif  // defined(OS_WIN)
  
diff --git a/devel/electron11/files/patch-printing_printing__features.h b/devel/electron12/files/patch-printing_printing__features.h
similarity index 82%
rename from devel/electron11/files/patch-printing_printing__features.h
rename to devel/electron12/files/patch-printing_printing__features.h
index 5e8aecbfab48ddb277a8943035bf616607ba370e..336245e03484cab66d11cee4091e2800d893c245 100644
--- a/devel/electron11/files/patch-printing_printing__features.h
+++ b/devel/electron12/files/patch-printing_printing__features.h
@@ -1,6 +1,6 @@
---- printing/printing_features.h.orig	2021-01-07 00:36:39 UTC
+--- printing/printing_features.h.orig	2021-04-14 01:08:53 UTC
 +++ printing/printing_features.h
-@@ -37,10 +37,10 @@ PRINTING_EXPORT bool IsXpsPrintCapabilityRequired();
+@@ -38,10 +38,10 @@ PRINTING_EXPORT bool IsXpsPrintCapabilityRequired();
  PRINTING_EXPORT bool ShouldPrintUsingXps(bool source_is_pdf);
  #endif  // defined(OS_WIN)
  
diff --git a/devel/electron11/files/patch-remoting_base_chromoting__event.cc b/devel/electron12/files/patch-remoting_base_chromoting__event.cc
similarity index 72%
rename from devel/electron11/files/patch-remoting_base_chromoting__event.cc
rename to devel/electron12/files/patch-remoting_base_chromoting__event.cc
index 61eb69105236e935df9432f22507991dce004d06..3155eebf02608da6a1af5c9b513c313bf230c14d 100644
--- a/devel/electron11/files/patch-remoting_base_chromoting__event.cc
+++ b/devel/electron12/files/patch-remoting_base_chromoting__event.cc
@@ -1,11 +1,11 @@
---- remoting/base/chromoting_event.cc.orig	2021-01-07 00:36:39 UTC
+--- remoting/base/chromoting_event.cc.orig	2021-04-14 01:08:53 UTC
 +++ remoting/base/chromoting_event.cc
-@@ -188,7 +188,7 @@ void ChromotingEvent::AddSystemInfo() {
+@@ -189,7 +189,7 @@ void ChromotingEvent::AddSystemInfo() {
    SetString(kCpuKey, base::SysInfo::OperatingSystemArchitecture());
    SetString(kOsVersionKey, base::SysInfo::OperatingSystemVersion());
    SetString(kWebAppVersionKey, STRINGIZE(VERSION));
 -#if defined(OS_LINUX) || defined(OS_CHROMEOS)
 +#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    Os os = Os::CHROMOTING_LINUX;
- #elif defined(OS_CHROMEOS)
+ #elif BUILDFLAG(IS_CHROMEOS_ASH)
    Os os = Os::CHROMOTING_CHROMEOS;
diff --git a/devel/electron11/files/patch-remoting_client_display_sys__opengl.h b/devel/electron12/files/patch-remoting_client_display_sys__opengl.h
similarity index 100%
rename from devel/electron11/files/patch-remoting_client_display_sys__opengl.h
rename to devel/electron12/files/patch-remoting_client_display_sys__opengl.h
diff --git a/devel/electron12/files/patch-remoting_codec_webrtc__video__encoder__vpx.cc b/devel/electron12/files/patch-remoting_codec_webrtc__video__encoder__vpx.cc
new file mode 100644
index 0000000000000000000000000000000000000000..b3b29fd57dc636a46e89a2d7531a066ef27ca5a8
--- /dev/null
+++ b/devel/electron12/files/patch-remoting_codec_webrtc__video__encoder__vpx.cc
@@ -0,0 +1,16 @@
+--- remoting/codec/webrtc_video_encoder_vpx.cc.orig	2021-04-14 01:08:53 UTC
++++ remoting/codec/webrtc_video_encoder_vpx.cc
+@@ -85,11 +85,11 @@ void SetVp8CodecParameters(vpx_codec_enc_cfg_t* config
+                            const webrtc::DesktopSize& size) {
+   SetCommonCodecParameters(config, size);
+ 
+-#if defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_BSD) || (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
+   // On Linux, using too many threads for VP8 encoding has been linked to high
+   // CPU usage on machines that are under stress. See http://crbug.com/1151148.
+   config->g_threads = std::min(config->g_threads, 2U);
+-#endif  // defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)
++#endif  // defined(OS_BSD) || (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS))
+ 
+   // Value of 2 means using the real time profile. This is basically a
+   // redundant option since we explicitly select real time mode when doing
diff --git a/devel/electron11/files/patch-remoting_host_desktop__resizer__ozone.cc b/devel/electron12/files/patch-remoting_host_desktop__resizer__ozone.cc
similarity index 100%
rename from devel/electron11/files/patch-remoting_host_desktop__resizer__ozone.cc
rename to devel/electron12/files/patch-remoting_host_desktop__resizer__ozone.cc
diff --git a/devel/electron11/files/patch-remoting_host_evaluate__capability.cc b/devel/electron12/files/patch-remoting_host_evaluate__capability.cc
similarity index 68%
rename from devel/electron11/files/patch-remoting_host_evaluate__capability.cc
rename to devel/electron12/files/patch-remoting_host_evaluate__capability.cc
index a23b9296df4cd98e5c9853b4e1043c8c8b03a07b..0229ce3660f95cc716f341e21ade8bbf70b15482 100644
--- a/devel/electron11/files/patch-remoting_host_evaluate__capability.cc
+++ b/devel/electron12/files/patch-remoting_host_evaluate__capability.cc
@@ -1,6 +1,6 @@
---- remoting/host/evaluate_capability.cc.orig	2021-01-07 00:36:39 UTC
+--- remoting/host/evaluate_capability.cc.orig	2021-04-14 01:08:53 UTC
 +++ remoting/host/evaluate_capability.cc
-@@ -51,7 +51,7 @@ base::FilePath BuildHostBinaryPath() {
+@@ -55,7 +55,7 @@ base::FilePath BuildHostBinaryPath() {
    }
  #endif
  
diff --git a/devel/electron12/files/patch-remoting_host_heartbeat__sender.cc b/devel/electron12/files/patch-remoting_host_heartbeat__sender.cc
new file mode 100644
index 0000000000000000000000000000000000000000..98fe6476ca316cb4e0da19283867b9ddef96373b
--- /dev/null
+++ b/devel/electron12/files/patch-remoting_host_heartbeat__sender.cc
@@ -0,0 +1,11 @@
+--- remoting/host/heartbeat_sender.cc.orig	2021-04-14 01:08:53 UTC
++++ remoting/host/heartbeat_sender.cc
+@@ -112,7 +112,7 @@ const net::BackoffEntry::Policy kBackoffPolicy = {
+ std::string GetHostname() {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag
+ // switch of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   return net::GetHostName();
+ #elif defined(OS_WIN)
+   wchar_t buffer[MAX_PATH] = {0};
diff --git a/devel/electron11/files/patch-remoting_host_host__attributes.cc b/devel/electron12/files/patch-remoting_host_host__attributes.cc
similarity index 100%
rename from devel/electron11/files/patch-remoting_host_host__attributes.cc
rename to devel/electron12/files/patch-remoting_host_host__attributes.cc
diff --git a/devel/electron12/files/patch-remoting_host_host__details.cc b/devel/electron12/files/patch-remoting_host_host__details.cc
new file mode 100644
index 0000000000000000000000000000000000000000..06a7739ef8a0c1e40cac10d05eb3588553edd2bd
--- /dev/null
+++ b/devel/electron12/files/patch-remoting_host_host__details.cc
@@ -0,0 +1,11 @@
+--- remoting/host/host_details.cc.orig	2021-04-14 01:08:53 UTC
++++ remoting/host/host_details.cc
+@@ -25,6 +25,8 @@ std::string GetHostOperatingSystemName() {
+   return "ChromeOS";
+ #elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
+   return "Linux";
++#elif defined(OS_FREEBSD)
++  return "FreeBSD";
+ #elif defined(OS_ANDROID)
+   return "Android";
+ #else
diff --git a/devel/electron11/files/patch-remoting_host_host__main.cc b/devel/electron12/files/patch-remoting_host_host__main.cc
similarity index 61%
rename from devel/electron11/files/patch-remoting_host_host__main.cc
rename to devel/electron12/files/patch-remoting_host_host__main.cc
index 7bbb82317fbf272e322d09ead6d85c7f13891f21..e24468e15b62c266a7b2a79baaa919e9f0a5b379 100644
--- a/devel/electron11/files/patch-remoting_host_host__main.cc
+++ b/devel/electron12/files/patch-remoting_host_host__main.cc
@@ -1,4 +1,4 @@
---- remoting/host/host_main.cc.orig	2021-01-07 00:36:39 UTC
+--- remoting/host/host_main.cc.orig	2021-04-14 01:08:53 UTC
 +++ remoting/host/host_main.cc
 @@ -48,9 +48,9 @@ int DesktopProcessMain();
  int FileChooserMain();
@@ -12,7 +12,24 @@
  
  namespace {
  
-@@ -143,10 +143,10 @@ MainRoutineFn SelectMainRoutine(const std::string& pro
+@@ -61,10 +61,14 @@ const char kUsageMessage[] =
+     "\n"
+     "Options:\n"
+ 
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_FREEBSD)
+     "  --audio-pipe-name=<pipe> - Sets the pipe name to capture audio on "
++#if defined(OS_LINUX)
+     "Linux.\n"
+-#endif  // defined(OS_LINUX)
++#else
++    "FreeBSD.\n"
++#endif
++#endif  // defined(OS_LINUX) || defined(OS_FREEBSD)
+ 
+ #if defined(OS_APPLE)
+     "  --list-audio-devices     - List all audio devices and their device "
+@@ -152,10 +156,10 @@ MainRoutineFn SelectMainRoutine(const std::string& pro
    } else if (process_type == kProcessTypeRdpDesktopSession) {
      main_routine = &RdpDesktopSessionMain;
  #endif  // defined(OS_WIN)
diff --git a/devel/electron11/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc b/devel/electron12/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc
similarity index 78%
rename from devel/electron11/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc
rename to devel/electron12/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc
index f6b122ed1d3894907b2aac3202d5ff7bad8e01c0..ce5b189cfd9a7102096d53f9ef33a1e32b6a8441 100644
--- a/devel/electron11/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc
+++ b/devel/electron12/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc
@@ -1,6 +1,6 @@
---- remoting/host/it2me/it2me_native_messaging_host_main.cc.orig	2021-01-07 00:36:39 UTC
+--- remoting/host/it2me/it2me_native_messaging_host_main.cc.orig	2021-04-14 01:08:53 UTC
 +++ remoting/host/it2me/it2me_native_messaging_host_main.cc
-@@ -29,13 +29,13 @@
+@@ -30,12 +30,12 @@
  #include "remoting/host/switches.h"
  #include "remoting/host/usage_stats_consent.h"
  
@@ -10,22 +10,21 @@
  
  #include "base/linux_util.h"
  #include "ui/events/platform/x11/x11_event_source.h"
- #include "ui/gfx/x/x11.h"
 -#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
 +#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
  #if defined(OS_APPLE)
  #include "base/mac/mac_util.h"
-@@ -113,7 +113,7 @@ int It2MeNativeMessagingHostMain(int argc, char** argv
+@@ -114,7 +114,7 @@ int It2MeNativeMessagingHostMain(int argc, char** argv
  
    remoting::LoadResources("");
  
 -#if defined(OS_LINUX) || defined(OS_CHROMEOS)
 +#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
-   // Required in order for us to run multiple X11 threads.
-   XInitThreads();
- 
-@@ -134,7 +134,7 @@ int It2MeNativeMessagingHostMain(int argc, char** argv
+   // Create an X11EventSource so the global X11 connection
+   // (x11::Connection::Get()) can dispatch X events.
+   auto event_source =
+@@ -132,7 +132,7 @@ int It2MeNativeMessagingHostMain(int argc, char** argv
    // Need to prime the host OS version value for linux to prevent IO on the
    // network thread. base::GetLinuxDistro() caches the result.
    base::GetLinuxDistro();
diff --git a/devel/electron11/files/patch-remoting_host_me2me__desktop__environment.cc b/devel/electron12/files/patch-remoting_host_me2me__desktop__environment.cc
similarity index 100%
rename from devel/electron11/files/patch-remoting_host_me2me__desktop__environment.cc
rename to devel/electron12/files/patch-remoting_host_me2me__desktop__environment.cc
diff --git a/devel/electron11/files/patch-remoting_host_remoting__me2me__host.cc b/devel/electron12/files/patch-remoting_host_remoting__me2me__host.cc
similarity index 84%
rename from devel/electron11/files/patch-remoting_host_remoting__me2me__host.cc
rename to devel/electron12/files/patch-remoting_host_remoting__me2me__host.cc
index 91053823b418a5219f3f1cc257fd2b3801d47736..33ff42b4f5ea9947ce954b299717aff0404a9126 100644
--- a/devel/electron11/files/patch-remoting_host_remoting__me2me__host.cc
+++ b/devel/electron12/files/patch-remoting_host_remoting__me2me__host.cc
@@ -1,6 +1,6 @@
---- remoting/host/remoting_me2me_host.cc.orig	2021-01-07 00:36:39 UTC
+--- remoting/host/remoting_me2me_host.cc.orig	2021-04-14 01:08:53 UTC
 +++ remoting/host/remoting_me2me_host.cc
-@@ -118,7 +118,7 @@
+@@ -120,14 +120,14 @@
  #include "remoting/host/mac/permission_utils.h"
  #endif  // defined(OS_APPLE)
  
@@ -9,16 +9,15 @@
  #include <gtk/gtk.h>
  
  #include "base/linux_util.h"
-@@ -126,7 +126,7 @@
+ #include "remoting/host/audio_capturer_linux.h"
  #include "remoting/host/linux/certificate_watcher.h"
  #include "ui/events/platform/x11/x11_event_source.h"
- #include "ui/gfx/x/x11.h"
 -#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
 +#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
  #if defined(OS_WIN)
  #include <commctrl.h>
-@@ -161,11 +161,11 @@ const char kApplicationName[] = "chromoting";
+@@ -162,11 +162,11 @@ const char kApplicationName[] = "chromoting";
  const char kStdinConfigPath[] = "-";
  #endif  // !defined(REMOTING_MULTI_PROCESS)
  
@@ -32,7 +31,7 @@
  
  #if defined(OS_POSIX)
  // The command line switch used to pass name of the unix domain socket used to
-@@ -362,7 +362,7 @@ class HostProcess : public ConfigWatcher::Delegate,
+@@ -359,7 +359,7 @@ class HostProcess : public ConfigWatcher::Delegate,
  
    std::unique_ptr<ChromotingHostContext> context_;
  
@@ -41,7 +40,7 @@
    // Watch for certificate changes and kill the host when changes occur
    std::unique_ptr<CertificateWatcher> cert_watcher_;
  #endif
-@@ -761,7 +761,7 @@ void HostProcess::CreateAuthenticatorFactory() {
+@@ -772,7 +772,7 @@ void HostProcess::CreateAuthenticatorFactory() {
      DCHECK(third_party_auth_config_.token_url.is_valid());
      DCHECK(third_party_auth_config_.token_validation_url.is_valid());
  
@@ -50,7 +49,7 @@
      if (!cert_watcher_) {
        cert_watcher_ = std::make_unique<CertificateWatcher>(
            base::BindRepeating(&HostProcess::ShutdownHost, this,
-@@ -848,7 +848,7 @@ void HostProcess::StartOnUiThread() {
+@@ -861,7 +861,7 @@ void HostProcess::StartOnUiThread() {
        base::BindRepeating(&HostProcess::OnPolicyUpdate, base::Unretained(this)),
        base::BindRepeating(&HostProcess::OnPolicyError, base::Unretained(this)));
  
@@ -59,7 +58,7 @@
    // If an audio pipe is specific on the command-line then initialize
    // AudioCapturerLinux to capture from it.
    base::FilePath audio_pipe_name = base::CommandLine::ForCurrentProcess()->
-@@ -857,7 +857,7 @@ void HostProcess::StartOnUiThread() {
+@@ -870,7 +870,7 @@ void HostProcess::StartOnUiThread() {
      remoting::AudioCapturerLinux::InitializePipeReader(
          context_->audio_task_runner(), audio_pipe_name);
    }
@@ -68,7 +67,7 @@
  
  #if defined(OS_POSIX)
    base::FilePath security_key_socket_name =
-@@ -906,7 +906,7 @@ void HostProcess::ShutdownOnUiThread() {
+@@ -919,7 +919,7 @@ void HostProcess::ShutdownOnUiThread() {
    // It is now safe for the HostProcess to be deleted.
    self_ = nullptr;
  
@@ -77,16 +76,16 @@
    // Cause the global AudioPipeReader to be freed, otherwise the audio
    // thread will remain in-use and prevent the process from exiting.
    // TODO(wez): DesktopEnvironmentFactory should own the pipe reader.
-@@ -1512,7 +1512,7 @@ void HostProcess::StartHost() {
+@@ -1591,7 +1591,7 @@ void HostProcess::StartHost() {
    host_->AddExtension(std::make_unique<TestEchoExtension>());
  
-   // TODO(simonmorris): Get the maximum session duration from a policy.
+   // TODO(joedow): Remove in M90.
 -#if defined(OS_LINUX) || defined(OS_CHROMEOS)
 +#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    host_->SetMaximumSessionDuration(base::TimeDelta::FromHours(20));
  #endif
  
-@@ -1687,7 +1687,7 @@ void HostProcess::OnCrash(const std::string& function_
+@@ -1768,7 +1768,7 @@ void HostProcess::OnCrash(const std::string& function_
  int HostProcessMain() {
    HOST_LOG << "Starting host process: version " << STRINGIZE(VERSION);
  
diff --git a/devel/electron11/files/patch-remoting_host_switches.cc b/devel/electron12/files/patch-remoting_host_switches.cc
similarity index 100%
rename from devel/electron11/files/patch-remoting_host_switches.cc
rename to devel/electron12/files/patch-remoting_host_switches.cc
diff --git a/devel/electron11/files/patch-remoting_host_switches.h b/devel/electron12/files/patch-remoting_host_switches.h
similarity index 100%
rename from devel/electron11/files/patch-remoting_host_switches.h
rename to devel/electron12/files/patch-remoting_host_switches.h
diff --git a/devel/electron11/files/patch-remoting_resources_remoting__strings.grd b/devel/electron12/files/patch-remoting_resources_remoting__strings.grd
similarity index 80%
rename from devel/electron11/files/patch-remoting_resources_remoting__strings.grd
rename to devel/electron12/files/patch-remoting_resources_remoting__strings.grd
index 01effd096eee9b1962cd3ee19dd3ad826deae374..513e1f3b2fa78dc724dbf18ccaffa97107dea4ab 100644
--- a/devel/electron11/files/patch-remoting_resources_remoting__strings.grd
+++ b/devel/electron12/files/patch-remoting_resources_remoting__strings.grd
@@ -1,6 +1,6 @@
---- remoting/resources/remoting_strings.grd.orig	2021-01-07 00:36:39 UTC
+--- remoting/resources/remoting_strings.grd.orig	2021-04-14 01:08:53 UTC
 +++ remoting/resources/remoting_strings.grd
-@@ -880,7 +880,7 @@ If '<ph name="SERVICE_SCRIPT_NAME">$3<ex>org.chromium.
+@@ -889,7 +889,7 @@ If '<ph name="SERVICE_SCRIPT_NAME">$3<ex>org.chromium.
            Open Screen Recording Preferences
          </message>
        </if>
@@ -9,7 +9,7 @@
          <message name="IDS_SESSION_DIALOG_MESSAGE" desc="The message to show at the top of the session-selection dialog.">
            Select a session to launch within your Chrome Remote Desktop environment. (Note that some session types may not support running within Chrome Remote Desktop and on the local console simultaneously.)
          </message>
-@@ -896,7 +896,7 @@ If '<ph name="SERVICE_SCRIPT_NAME">$3<ex>org.chromium.
+@@ -905,7 +905,7 @@ If '<ph name="SERVICE_SCRIPT_NAME">$3<ex>org.chromium.
          <message name="IDS_SESSION_DIALOG_DEFAULT_SESSION_COMMENT" desc="The comment for the entry to launch the default session.">
            Launch the default XSession
          </message>
diff --git a/devel/electron11/files/patch-remoting_test_it2me__standalone__host.cc b/devel/electron12/files/patch-remoting_test_it2me__standalone__host.cc
similarity index 100%
rename from devel/electron11/files/patch-remoting_test_it2me__standalone__host.cc
rename to devel/electron12/files/patch-remoting_test_it2me__standalone__host.cc
diff --git a/devel/electron11/files/patch-remoting_test_it2me__standalone__host__main.cc b/devel/electron12/files/patch-remoting_test_it2me__standalone__host__main.cc
similarity index 79%
rename from devel/electron11/files/patch-remoting_test_it2me__standalone__host__main.cc
rename to devel/electron12/files/patch-remoting_test_it2me__standalone__host__main.cc
index ca168b73b7591a57cb5200b9093cd9ad6b823b2f..7f29b773568993ccc375d263c72bfc6a459cd015 100644
--- a/devel/electron11/files/patch-remoting_test_it2me__standalone__host__main.cc
+++ b/devel/electron12/files/patch-remoting_test_it2me__standalone__host__main.cc
@@ -1,6 +1,6 @@
---- remoting/test/it2me_standalone_host_main.cc.orig	2021-01-07 00:36:39 UTC
+--- remoting/test/it2me_standalone_host_main.cc.orig	2021-04-14 01:08:53 UTC
 +++ remoting/test/it2me_standalone_host_main.cc
-@@ -9,20 +9,20 @@
+@@ -9,19 +9,19 @@
  #include "remoting/proto/event.pb.h"
  #include "remoting/test/it2me_standalone_host.h"
  
@@ -10,7 +10,6 @@
  
  #include "base/linux_util.h"
  #include "ui/events/platform/x11/x11_event_source.h"
- #include "ui/gfx/x/x11.h"
 -#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
 +#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
@@ -21,10 +20,10 @@
  
 -#if defined(OS_LINUX) || defined(OS_CHROMEOS)
 +#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
-   // Required in order for us to run multiple X11 threads.
-   XInitThreads();
- 
-@@ -43,7 +43,7 @@ int main(int argc, const char** argv) {
+   // Create an X11EventSource so the global X11 connection
+   // (x11::Connection::Get()) can dispatch X events.
+   auto event_source =
+@@ -39,7 +39,7 @@ int main(int argc, const char** argv) {
    // Need to prime the host OS version value for linux to prevent IO on the
    // network thread. base::GetLinuxDistro() caches the result.
    base::GetLinuxDistro();
diff --git a/devel/electron11/files/patch-sandbox_BUILD.gn b/devel/electron12/files/patch-sandbox_BUILD.gn
similarity index 100%
rename from devel/electron11/files/patch-sandbox_BUILD.gn
rename to devel/electron12/files/patch-sandbox_BUILD.gn
diff --git a/devel/electron11/files/patch-sandbox_features.gni b/devel/electron12/files/patch-sandbox_features.gni
similarity index 100%
rename from devel/electron11/files/patch-sandbox_features.gni
rename to devel/electron12/files/patch-sandbox_features.gni
diff --git a/devel/electron11/files/patch-sandbox_linux_BUILD.gn b/devel/electron12/files/patch-sandbox_linux_BUILD.gn
similarity index 100%
rename from devel/electron11/files/patch-sandbox_linux_BUILD.gn
rename to devel/electron12/files/patch-sandbox_linux_BUILD.gn
diff --git a/devel/electron11/files/patch-sandbox_linux_services_init__process__reaper.cc b/devel/electron12/files/patch-sandbox_linux_services_init__process__reaper.cc
similarity index 100%
rename from devel/electron11/files/patch-sandbox_linux_services_init__process__reaper.cc
rename to devel/electron12/files/patch-sandbox_linux_services_init__process__reaper.cc
diff --git a/devel/electron11/files/patch-sandbox_linux_services_libc__interceptor.cc b/devel/electron12/files/patch-sandbox_linux_services_libc__interceptor.cc
similarity index 100%
rename from devel/electron11/files/patch-sandbox_linux_services_libc__interceptor.cc
rename to devel/electron12/files/patch-sandbox_linux_services_libc__interceptor.cc
diff --git a/devel/electron11/files/patch-sandbox_policy_BUILD.gn b/devel/electron12/files/patch-sandbox_policy_BUILD.gn
similarity index 72%
rename from devel/electron11/files/patch-sandbox_policy_BUILD.gn
rename to devel/electron12/files/patch-sandbox_policy_BUILD.gn
index fb03a80deaa81ebd7416cbd01dd6f36906f13189..b148f6f7eea9c3a8a3b13819094e2814c654802a 100644
--- a/devel/electron11/files/patch-sandbox_policy_BUILD.gn
+++ b/devel/electron12/files/patch-sandbox_policy_BUILD.gn
@@ -1,6 +1,6 @@
---- sandbox/policy/BUILD.gn.orig	2021-01-07 00:36:39 UTC
+--- sandbox/policy/BUILD.gn.orig	2021-04-14 01:08:53 UTC
 +++ sandbox/policy/BUILD.gn
-@@ -27,7 +27,7 @@ component("policy") {
+@@ -29,7 +29,7 @@ component("policy") {
      "//sandbox:common",
    ]
    public_deps = []
diff --git a/devel/electron11/files/patch-sandbox_policy_switches.cc b/devel/electron12/files/patch-sandbox_policy_switches.cc
similarity index 79%
rename from devel/electron11/files/patch-sandbox_policy_switches.cc
rename to devel/electron12/files/patch-sandbox_policy_switches.cc
index d216ef8e65c692a402b8315a16346faac778328c..b12ab0d03181a4517f748262795fddcf1e75214b 100644
--- a/devel/electron11/files/patch-sandbox_policy_switches.cc
+++ b/devel/electron12/files/patch-sandbox_policy_switches.cc
@@ -1,6 +1,6 @@
---- sandbox/policy/switches.cc.orig	2021-01-07 00:36:39 UTC
+--- sandbox/policy/switches.cc.orig	2021-04-14 01:08:53 UTC
 +++ sandbox/policy/switches.cc
-@@ -81,7 +81,7 @@ const char kGpuSandboxFailuresFatal[] = "gpu-sandbox-f
+@@ -82,7 +82,7 @@ const char kGpuSandboxFailuresFatal[] = "gpu-sandbox-f
  // Meant to be used as a browser-level switch for testing purposes only.
  const char kNoSandbox[] = "no-sandbox";
  
diff --git a/devel/electron11/files/patch-sandbox_policy_switches.h b/devel/electron12/files/patch-sandbox_policy_switches.h
similarity index 77%
rename from devel/electron11/files/patch-sandbox_policy_switches.h
rename to devel/electron12/files/patch-sandbox_policy_switches.h
index 12c95a3ebe7ba59cb50e4a08103a2d76c3e15d2a..bc713b0c4bba890556333dc66a12461b9ed2edca 100644
--- a/devel/electron11/files/patch-sandbox_policy_switches.h
+++ b/devel/electron12/files/patch-sandbox_policy_switches.h
@@ -1,6 +1,6 @@
---- sandbox/policy/switches.h.orig	2021-01-07 00:36:39 UTC
+--- sandbox/policy/switches.h.orig	2021-04-14 01:08:53 UTC
 +++ sandbox/policy/switches.h
-@@ -53,7 +53,7 @@ SANDBOX_POLICY_EXPORT extern const char kDisableSetuid
+@@ -54,7 +54,7 @@ SANDBOX_POLICY_EXPORT extern const char kDisableSetuid
  SANDBOX_POLICY_EXPORT extern const char kGpuSandboxAllowSysVShm[];
  SANDBOX_POLICY_EXPORT extern const char kGpuSandboxFailuresFatal[];
  SANDBOX_POLICY_EXPORT extern const char kNoSandbox[];
diff --git a/devel/electron11/files/patch-services_audio_BUILD.gn b/devel/electron12/files/patch-services_audio_BUILD.gn
similarity index 71%
rename from devel/electron11/files/patch-services_audio_BUILD.gn
rename to devel/electron12/files/patch-services_audio_BUILD.gn
index 2f7eb34b414a954483d2a3a3eafd032068961993..978f19e7a7deccb16296a6d1df8140823fcfd3af 100644
--- a/devel/electron11/files/patch-services_audio_BUILD.gn
+++ b/devel/electron12/files/patch-services_audio_BUILD.gn
@@ -1,6 +1,6 @@
---- services/audio/BUILD.gn.orig	2021-01-07 00:36:39 UTC
+--- services/audio/BUILD.gn.orig	2021-04-14 01:08:53 UTC
 +++ services/audio/BUILD.gn
-@@ -73,7 +73,7 @@ source_set("audio") {
+@@ -75,7 +75,7 @@ source_set("audio") {
      "//services/audio/public/mojom",
    ]
  
diff --git a/devel/electron11/files/patch-services_device_geolocation_location__arbitrator.cc b/devel/electron12/files/patch-services_device_geolocation_location__arbitrator.cc
similarity index 100%
rename from devel/electron11/files/patch-services_device_geolocation_location__arbitrator.cc
rename to devel/electron12/files/patch-services_device_geolocation_location__arbitrator.cc
diff --git a/devel/electron11/files/patch-services_device_hid_BUILD.gn b/devel/electron12/files/patch-services_device_hid_BUILD.gn
similarity index 71%
rename from devel/electron11/files/patch-services_device_hid_BUILD.gn
rename to devel/electron12/files/patch-services_device_hid_BUILD.gn
index 932d40bae6a33f838135c1338aaad5c95d799057..3d18dab5bbafab33e37f518bb1645987a265a6a8 100644
--- a/devel/electron11/files/patch-services_device_hid_BUILD.gn
+++ b/devel/electron12/files/patch-services_device_hid_BUILD.gn
@@ -1,6 +1,6 @@
---- services/device/hid/BUILD.gn.orig	2021-01-07 00:36:39 UTC
+--- services/device/hid/BUILD.gn.orig	2021-04-14 01:08:53 UTC
 +++ services/device/hid/BUILD.gn
-@@ -43,6 +43,15 @@ source_set("hid") {
+@@ -45,6 +45,15 @@ source_set("hid") {
      deps += [ "//device/udev_linux" ]
    }
  
@@ -13,6 +13,6 @@
 +    ]
 +  }
 +
-   if (is_chromeos) {
+   if (is_chromeos_ash) {
      deps += [ "//chromeos/dbus/permission_broker" ]
    }
diff --git a/devel/electron11/files/patch-services_device_hid_hid__connection__freebsd.cc b/devel/electron12/files/patch-services_device_hid_hid__connection__freebsd.cc
similarity index 98%
rename from devel/electron11/files/patch-services_device_hid_hid__connection__freebsd.cc
rename to devel/electron12/files/patch-services_device_hid_hid__connection__freebsd.cc
index 5a9f4bdee20d16e270529db96c1a91f538d3a682..8ce5790da2551d1cbb674763e839080def453ede 100644
--- a/devel/electron11/files/patch-services_device_hid_hid__connection__freebsd.cc
+++ b/devel/electron12/files/patch-services_device_hid_hid__connection__freebsd.cc
@@ -1,6 +1,6 @@
---- services/device/hid/hid_connection_freebsd.cc.orig	2021-01-25 11:28:21 UTC
+--- services/device/hid/hid_connection_freebsd.cc.orig	2021-04-22 07:53:24 UTC
 +++ services/device/hid/hid_connection_freebsd.cc
-@@ -0,0 +1,240 @@
+@@ -0,0 +1,241 @@
 +// Copyright (c) 2014 The Chromium Authors. All rights reserved.
 +// Use of this source code is governed by a BSD-style license that can be
 +// found in the LICENSE file.
@@ -182,8 +182,9 @@
 +HidConnectionFreeBSD::HidConnectionFreeBSD(
 +    scoped_refptr<HidDeviceInfo> device_info,
 +    base::ScopedFD fd,
-+    scoped_refptr<base::SequencedTaskRunner> blocking_task_runner)
-+    : HidConnection(device_info),
++    scoped_refptr<base::SequencedTaskRunner> blocking_task_runner,
++    bool allow_protected_reports)
++    : HidConnection(device_info, allow_protected_reports),
 +      helper_(nullptr, base::OnTaskRunnerDeleter(blocking_task_runner)),
 +      blocking_task_runner_(std::move(blocking_task_runner)) {
 +  helper_.reset(new BlockingTaskRunnerHelper(std::move(fd), device_info,
diff --git a/devel/electron11/files/patch-services_device_hid_hid__connection__freebsd.h b/devel/electron12/files/patch-services_device_hid_hid__connection__freebsd.h
similarity index 93%
rename from devel/electron11/files/patch-services_device_hid_hid__connection__freebsd.h
rename to devel/electron12/files/patch-services_device_hid_hid__connection__freebsd.h
index 7c5c327d0c48d0afa4b68f99662b31cbe88c7b93..79d06f4fc8b0194e02b65bba124711ff253a35be 100644
--- a/devel/electron11/files/patch-services_device_hid_hid__connection__freebsd.h
+++ b/devel/electron12/files/patch-services_device_hid_hid__connection__freebsd.h
@@ -1,6 +1,6 @@
---- services/device/hid/hid_connection_freebsd.h.orig	2021-01-25 11:28:21 UTC
+--- services/device/hid/hid_connection_freebsd.h.orig	2021-04-22 07:53:24 UTC
 +++ services/device/hid/hid_connection_freebsd.h
-@@ -0,0 +1,65 @@
+@@ -0,0 +1,66 @@
 +// Copyright (c) 2014 The Chromium Authors. All rights reserved.
 +// Use of this source code is governed by a BSD-style license that can be
 +// found in the LICENSE file.
@@ -33,7 +33,8 @@
 +  HidConnectionFreeBSD(
 +      scoped_refptr<HidDeviceInfo> device_info,
 +      base::ScopedFD fd,
-+      scoped_refptr<base::SequencedTaskRunner> blocking_task_runner);
++      scoped_refptr<base::SequencedTaskRunner> blocking_task_runner,
++      bool allow_protected_reports);
 +
 + private:
 +  friend class base::RefCountedThreadSafe<HidConnectionFreeBSD>;
diff --git a/devel/electron11/files/patch-services_device_hid_hid__service.cc b/devel/electron12/files/patch-services_device_hid_hid__service.cc
similarity index 82%
rename from devel/electron11/files/patch-services_device_hid_hid__service.cc
rename to devel/electron12/files/patch-services_device_hid_hid__service.cc
index 49e1df3e3780230cea2536123566b09b66cc7689..31ca797ebb5374c23021a9b76be99d8acedf5833 100644
--- a/devel/electron11/files/patch-services_device_hid_hid__service.cc
+++ b/devel/electron12/files/patch-services_device_hid_hid__service.cc
@@ -1,6 +1,6 @@
---- services/device/hid/hid_service.cc.orig	2021-01-07 00:36:39 UTC
+--- services/device/hid/hid_service.cc.orig	2021-04-14 01:08:53 UTC
 +++ services/device/hid/hid_service.cc
-@@ -16,6 +16,8 @@
+@@ -18,6 +18,8 @@
  
  #if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(USE_UDEV)
  #include "services/device/hid/hid_service_linux.h"
@@ -9,7 +9,7 @@
  #elif defined(OS_MAC)
  #include "services/device/hid/hid_service_mac.h"
  #elif defined(OS_WIN)
-@@ -36,6 +38,8 @@ constexpr base::TaskTraits HidService::kBlockingTaskTr
+@@ -58,6 +60,8 @@ constexpr base::TaskTraits HidService::kBlockingTaskTr
  std::unique_ptr<HidService> HidService::Create() {
  #if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(USE_UDEV)
    return base::WrapUnique(new HidServiceLinux());
diff --git a/devel/electron11/files/patch-services_device_hid_hid__service__freebsd.cc b/devel/electron12/files/patch-services_device_hid_hid__service__freebsd.cc
similarity index 95%
rename from devel/electron11/files/patch-services_device_hid_hid__service__freebsd.cc
rename to devel/electron12/files/patch-services_device_hid_hid__service__freebsd.cc
index 63103f3e4fb23b51e5c859ff076d7c34277971af..456ed468a2b6547cf941298bdd5f61b44fe6fe27 100644
--- a/devel/electron11/files/patch-services_device_hid_hid__service__freebsd.cc
+++ b/devel/electron12/files/patch-services_device_hid_hid__service__freebsd.cc
@@ -1,6 +1,6 @@
---- services/device/hid/hid_service_freebsd.cc.orig	2021-01-25 11:28:21 UTC
+--- services/device/hid/hid_service_freebsd.cc.orig	2021-04-22 07:53:24 UTC
 +++ services/device/hid/hid_service_freebsd.cc
-@@ -0,0 +1,382 @@
+@@ -0,0 +1,389 @@
 +// Copyright 2014 The Chromium Authors. All rights reserved.
 +// Use of this source code is governed by a BSD-style license that can be
 +// found in the LICENSE file.
@@ -43,8 +43,10 @@
 +
 +struct HidServiceFreeBSD::ConnectParams {
 +  ConnectParams(scoped_refptr<HidDeviceInfo> device_info,
++                bool allow_protected_reports,
 +                ConnectCallback callback)
 +      : device_info(std::move(device_info)),
++	allow_protected_reports(allow_protected_reports),
 +        callback(std::move(callback)),
 +        task_runner(base::ThreadTaskRunnerHandle::Get()),
 +        blocking_task_runner(
@@ -52,6 +54,7 @@
 +  ~ConnectParams() {}
 +
 +  scoped_refptr<HidDeviceInfo> device_info;
++  bool allow_protected_reports;
 +  ConnectCallback callback;
 +  scoped_refptr<base::SequencedTaskRunner> task_runner;
 +  scoped_refptr<base::SequencedTaskRunner> blocking_task_runner;
@@ -345,7 +348,8 @@
 +}
 +
 +void HidServiceFreeBSD::Connect(const std::string& device_guid,
-+                            ConnectCallback callback) {
++                                bool allow_protected_reports,
++                                ConnectCallback callback) {
 +  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 +
 +  const auto& map_entry = devices().find(device_guid);
@@ -357,7 +361,9 @@
 +
 +  scoped_refptr<HidDeviceInfo> device_info = map_entry->second;
 +
-+  auto params = std::make_unique<ConnectParams>(device_info, std::move(callback));
++  auto params = std::make_unique<ConnectParams>(device_info,
++                                                allow_protected_reports,
++						std::move(callback));
 +  scoped_refptr<base::SequencedTaskRunner> blocking_task_runner =
 +      params->blocking_task_runner;
 +
@@ -378,7 +384,8 @@
 +  std::move(params->callback).Run(base::MakeRefCounted<HidConnectionFreeBSD>(
 +    std::move(params->device_info),
 +    std::move(params->fd),
-+    std::move(params->blocking_task_runner)
++    std::move(params->blocking_task_runner),
++    params->allow_protected_reports
 +  ));
 +}
 +
diff --git a/devel/electron11/files/patch-services_device_hid_hid__service__freebsd.h b/devel/electron12/files/patch-services_device_hid_hid__service__freebsd.h
similarity index 91%
rename from devel/electron11/files/patch-services_device_hid_hid__service__freebsd.h
rename to devel/electron12/files/patch-services_device_hid_hid__service__freebsd.h
index 3c61726f9be811a426b6a5c808a8ec2f3d03dafe..8f7f4745229967cf028ca5213394f6b807fd92d8 100644
--- a/devel/electron11/files/patch-services_device_hid_hid__service__freebsd.h
+++ b/devel/electron12/files/patch-services_device_hid_hid__service__freebsd.h
@@ -1,6 +1,6 @@
---- services/device/hid/hid_service_freebsd.h.orig	2021-01-25 11:28:21 UTC
+--- services/device/hid/hid_service_freebsd.h.orig	2021-04-22 07:53:24 UTC
 +++ services/device/hid/hid_service_freebsd.h
-@@ -0,0 +1,46 @@
+@@ -0,0 +1,47 @@
 +// Copyright 2014 The Chromium Authors. All rights reserved.
 +// Use of this source code is governed by a BSD-style license that can be
 +// found in the LICENSE file.
@@ -25,6 +25,7 @@
 +  ~HidServiceFreeBSD() override;
 +
 +  void Connect(const std::string& device_guid,
++               bool allow_protected_reports,
 +               ConnectCallback connect) override;
 +  base::WeakPtr<HidService> GetWeakPtr() override;
 +
diff --git a/devel/electron12/files/patch-services_device_serial_BUILD.gn b/devel/electron12/files/patch-services_device_serial_BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..7362ee6a11bcf64a7931740a08f6c7282bf30b5a
--- /dev/null
+++ b/devel/electron12/files/patch-services_device_serial_BUILD.gn
@@ -0,0 +1,11 @@
+--- services/device/serial/BUILD.gn.orig	2021-04-14 01:08:53 UTC
++++ services/device/serial/BUILD.gn
+@@ -5,7 +5,7 @@
+ import("//build/config/chromeos/ui_mode.gni")
+ import("//build/config/features.gni")
+ 
+-if (is_win || ((is_linux || is_chromeos) && use_udev) || is_mac) {
++if (is_win || ((is_linux || is_chromeos) && use_udev) || is_mac || is_bsd) {
+   config("platform_support") {
+     visibility = [ ":serial" ]
+     if (is_win) {
diff --git a/devel/electron11/files/patch-services_device_serial_serial__device__enumerator.cc b/devel/electron12/files/patch-services_device_serial_serial__device__enumerator.cc
similarity index 100%
rename from devel/electron11/files/patch-services_device_serial_serial__device__enumerator.cc
rename to devel/electron12/files/patch-services_device_serial_serial__device__enumerator.cc
diff --git a/devel/electron11/files/patch-services_device_serial_serial__io__handler__posix.cc b/devel/electron12/files/patch-services_device_serial_serial__io__handler__posix.cc
similarity index 82%
rename from devel/electron11/files/patch-services_device_serial_serial__io__handler__posix.cc
rename to devel/electron12/files/patch-services_device_serial_serial__io__handler__posix.cc
index 63109d9fb199f8805e4289a443ba40a53d50a98a..466b7abf3e501c6cd62e54938e8fb63fddfdeb2c 100644
--- a/devel/electron11/files/patch-services_device_serial_serial__io__handler__posix.cc
+++ b/devel/electron12/files/patch-services_device_serial_serial__io__handler__posix.cc
@@ -1,6 +1,6 @@
---- services/device/serial/serial_io_handler_posix.cc.orig	2021-01-07 00:36:39 UTC
+--- services/device/serial/serial_io_handler_posix.cc.orig	2021-04-14 01:08:53 UTC
 +++ services/device/serial/serial_io_handler_posix.cc
-@@ -37,6 +37,10 @@ struct termios2 {
+@@ -38,6 +38,10 @@ struct termios2 {
  
  #endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
  
@@ -11,7 +11,7 @@
  #if defined(OS_MAC)
  #include <IOKit/serial/ioss.h>
  #endif
-@@ -67,7 +71,7 @@ bool BitrateToSpeedConstant(int bitrate, speed_t* spee
+@@ -68,7 +72,7 @@ bool BitrateToSpeedConstant(int bitrate, speed_t* spee
      BITRATE_TO_SPEED_CASE(9600)
      BITRATE_TO_SPEED_CASE(19200)
      BITRATE_TO_SPEED_CASE(38400)
diff --git a/devel/electron11/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc b/devel/electron12/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc
similarity index 86%
rename from devel/electron11/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc
rename to devel/electron12/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc
index 9405dc9c36dff1548a328b0ddfa62804def291ac..311350a50639ad5c9dae0ed1cc884356712fa1f2 100644
--- a/devel/electron11/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc
+++ b/devel/electron12/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc
@@ -1,6 +1,6 @@
---- services/device/time_zone_monitor/time_zone_monitor_linux.cc.orig	2021-01-07 00:36:39 UTC
+--- services/device/time_zone_monitor/time_zone_monitor_linux.cc.orig	2021-04-14 01:08:53 UTC
 +++ services/device/time_zone_monitor/time_zone_monitor_linux.cc
-@@ -127,7 +127,11 @@ class TimeZoneMonitorLinuxImpl
+@@ -125,7 +125,11 @@ class TimeZoneMonitorLinuxImpl
      // false positives are harmless, assuming the false positive rate is
      // reasonable.
      const char* const kFilesToWatch[] = {
diff --git a/devel/electron11/files/patch-services_device_usb_BUILD.gn b/devel/electron12/files/patch-services_device_usb_BUILD.gn
similarity index 72%
rename from devel/electron11/files/patch-services_device_usb_BUILD.gn
rename to devel/electron12/files/patch-services_device_usb_BUILD.gn
index 33d7c9239d97866102398a15af9b6f045d0c18dd..9665b9dca9571aa0fc9b550bd6ce569b3cb8c1f1 100644
--- a/devel/electron11/files/patch-services_device_usb_BUILD.gn
+++ b/devel/electron12/files/patch-services_device_usb_BUILD.gn
@@ -1,6 +1,6 @@
---- services/device/usb/BUILD.gn.orig	2021-01-07 00:36:39 UTC
+--- services/device/usb/BUILD.gn.orig	2021-04-14 01:08:53 UTC
 +++ services/device/usb/BUILD.gn
-@@ -125,7 +125,7 @@ static_library("usb") {
+@@ -142,7 +142,7 @@ static_library("usb") {
      deps += [ "//third_party/re2" ]
    }
  
diff --git a/devel/electron11/files/patch-services_network_BUILD.gn b/devel/electron12/files/patch-services_network_BUILD.gn
similarity index 63%
rename from devel/electron11/files/patch-services_network_BUILD.gn
rename to devel/electron12/files/patch-services_network_BUILD.gn
index df185e22b25e9d8e8854f57b7290a9edc4b481fd..d70a84fd950adc0b1d39c4be5ea83cc2f4ea1899 100644
--- a/devel/electron11/files/patch-services_network_BUILD.gn
+++ b/devel/electron12/files/patch-services_network_BUILD.gn
@@ -1,7 +1,7 @@
---- services/network/BUILD.gn.orig	2021-01-07 00:36:39 UTC
+--- services/network/BUILD.gn.orig	2021-04-14 01:08:53 UTC
 +++ services/network/BUILD.gn
-@@ -261,9 +261,15 @@ component("network_service") {
-     deps += [ "//components/certificate_transparency" ]
+@@ -273,9 +273,15 @@ component("network_service") {
+     ]
    }
  
 -  if (is_linux || is_chromeos) {
diff --git a/devel/electron11/files/patch-services_network_network__sandbox__hook__linux.cc b/devel/electron12/files/patch-services_network_network__sandbox__hook__linux.cc
similarity index 100%
rename from devel/electron11/files/patch-services_network_network__sandbox__hook__linux.cc
rename to devel/electron12/files/patch-services_network_network__sandbox__hook__linux.cc
diff --git a/devel/electron12/files/patch-services_network_network__service.cc b/devel/electron12/files/patch-services_network_network__service.cc
new file mode 100644
index 0000000000000000000000000000000000000000..c69cca3f780b7272906bcb4e7b002577a0749763
--- /dev/null
+++ b/devel/electron12/files/patch-services_network_network__service.cc
@@ -0,0 +1,20 @@
+--- services/network/network_service.cc.orig	2021-04-14 01:08:53 UTC
++++ services/network/network_service.cc
+@@ -73,7 +73,7 @@
+ #include "third_party/boringssl/src/include/openssl/cpu.h"
+ #endif
+ 
+-#if (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) && \
++#if (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)) && \
+     !BUILDFLAG(IS_CHROMECAST)
+ #include "components/os_crypt/key_storage_config_linux.h"
+ #endif
+@@ -680,7 +680,7 @@ void NetworkService::OnCertDBChanged() {
+   net::CertDatabase::GetInstance()->NotifyObserversCertDBChanged();
+ }
+ 
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ void NetworkService::SetCryptConfig(mojom::CryptConfigPtr crypt_config) {
+ #if !BUILDFLAG(IS_CHROMECAST)
+   DCHECK(!os_crypt_config_set_);
diff --git a/devel/electron11/files/patch-services_network_network__service.h b/devel/electron12/files/patch-services_network_network__service.h
similarity index 55%
rename from devel/electron11/files/patch-services_network_network__service.h
rename to devel/electron12/files/patch-services_network_network__service.h
index f76598b3372bb875396b2692e77d0db78ad4fb41..d3525d5fd4f7712fb6b30e628c12821a9242cd0c 100644
--- a/devel/electron11/files/patch-services_network_network__service.h
+++ b/devel/electron12/files/patch-services_network_network__service.h
@@ -1,11 +1,11 @@
---- services/network/network_service.h.orig	2021-01-07 00:36:39 UTC
+--- services/network/network_service.h.orig	2021-04-14 01:08:53 UTC
 +++ services/network/network_service.h
-@@ -196,7 +196,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkService
+@@ -197,7 +197,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkService
        base::span<const uint8_t> config,
        mojom::NetworkService::UpdateLegacyTLSConfigCallback callback) override;
    void OnCertDBChanged() override;
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
    void SetCryptConfig(mojom::CryptConfigPtr crypt_config) override;
  #endif
  #if defined(OS_WIN) || defined(OS_MAC)
diff --git a/devel/electron11/files/patch-services_network_public_cpp_cert__verifier_cert__verifier__creation.cc b/devel/electron12/files/patch-services_network_public_cpp_cert__verifier_cert__verifier__creation.cc
similarity index 84%
rename from devel/electron11/files/patch-services_network_public_cpp_cert__verifier_cert__verifier__creation.cc
rename to devel/electron12/files/patch-services_network_public_cpp_cert__verifier_cert__verifier__creation.cc
index 8e2400a24d6849cf0b5024066a7aa833ad9e118d..cf279c78890337d96dcaa351f9e52255efbcdc3f 100644
--- a/devel/electron11/files/patch-services_network_public_cpp_cert__verifier_cert__verifier__creation.cc
+++ b/devel/electron12/files/patch-services_network_public_cpp_cert__verifier_cert__verifier__creation.cc
@@ -1,6 +1,6 @@
---- services/network/public/cpp/cert_verifier/cert_verifier_creation.cc.orig	2021-01-07 00:36:39 UTC
+--- services/network/public/cpp/cert_verifier/cert_verifier_creation.cc.orig	2021-04-14 01:08:53 UTC
 +++ services/network/public/cpp/cert_verifier/cert_verifier_creation.cc
-@@ -70,7 +70,7 @@ scoped_refptr<net::CertVerifyProc> CreateCertVerifyPro
+@@ -71,7 +71,7 @@ scoped_refptr<net::CertVerifyProc> CreateCertVerifyPro
  
  bool IsUsingCertNetFetcher() {
  #if defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_CHROMEOS) || \
diff --git a/devel/electron11/files/patch-services_resource__coordinator_memory__instrumentation_queued__request__dispatcher.cc b/devel/electron12/files/patch-services_resource__coordinator_memory__instrumentation_queued__request__dispatcher.cc
similarity index 82%
rename from devel/electron11/files/patch-services_resource__coordinator_memory__instrumentation_queued__request__dispatcher.cc
rename to devel/electron12/files/patch-services_resource__coordinator_memory__instrumentation_queued__request__dispatcher.cc
index b4516a3b015cec7e987cca1ecbc6778d5c9f058d..a035d0b161f68db40a6e1f1064d59b6c49fc250f 100644
--- a/devel/electron11/files/patch-services_resource__coordinator_memory__instrumentation_queued__request__dispatcher.cc
+++ b/devel/electron12/files/patch-services_resource__coordinator_memory__instrumentation_queued__request__dispatcher.cc
@@ -1,15 +1,15 @@
---- services/resource_coordinator/memory_instrumentation/queued_request_dispatcher.cc.orig	2021-01-07 00:36:39 UTC
+--- services/resource_coordinator/memory_instrumentation/queued_request_dispatcher.cc.orig	2021-04-14 01:08:53 UTC
 +++ services/resource_coordinator/memory_instrumentation/queued_request_dispatcher.cc
-@@ -45,7 +45,7 @@ namespace {
+@@ -50,7 +50,7 @@ namespace {
  uint32_t CalculatePrivateFootprintKb(const mojom::RawOSMemDump& os_dump,
                                       uint32_t shared_resident_kb) {
    DCHECK(os_dump.platform_private_footprint);
--#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
-+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || \
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD) || \
+     defined(OS_FUCHSIA)
    uint64_t rss_anon_bytes = os_dump.platform_private_footprint->rss_anon_bytes;
    uint64_t vm_swap_bytes = os_dump.platform_private_footprint->vm_swap_bytes;
-   return (rss_anon_bytes + vm_swap_bytes) / 1024;
-@@ -84,7 +84,7 @@ memory_instrumentation::mojom::OSMemDumpPtr CreatePubl
+@@ -90,7 +90,7 @@ memory_instrumentation::mojom::OSMemDumpPtr CreatePubl
    os_dump->is_peak_rss_resettable = internal_os_dump.is_peak_rss_resettable;
    os_dump->private_footprint_kb =
        CalculatePrivateFootprintKb(internal_os_dump, shared_resident_kb);
diff --git a/devel/electron11/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h b/devel/electron12/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h
similarity index 100%
rename from devel/electron11/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h
rename to devel/electron12/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h
diff --git a/devel/electron11/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__linux.cc b/devel/electron12/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__linux.cc
similarity index 100%
rename from devel/electron11/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__linux.cc
rename to devel/electron12/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__linux.cc
diff --git a/devel/electron11/files/patch-services_service__manager_BUILD.gn b/devel/electron12/files/patch-services_service__manager_BUILD.gn
similarity index 63%
rename from devel/electron11/files/patch-services_service__manager_BUILD.gn
rename to devel/electron12/files/patch-services_service__manager_BUILD.gn
index cb63aa20fe000901c00297ddb66975a1691c2271..be9512f9f59ddbadafc83e51dfbde84d7fbb75a2 100644
--- a/devel/electron11/files/patch-services_service__manager_BUILD.gn
+++ b/devel/electron12/files/patch-services_service__manager_BUILD.gn
@@ -1,6 +1,6 @@
---- services/service_manager/BUILD.gn.orig	2021-01-07 00:36:39 UTC
+--- services/service_manager/BUILD.gn.orig	2021-04-14 01:08:53 UTC
 +++ services/service_manager/BUILD.gn
-@@ -65,7 +65,7 @@ source_set("service_manager") {
+@@ -66,7 +66,7 @@ source_set("service_manager") {
      ]
    }
  
diff --git a/devel/electron11/files/patch-services_service__manager_public_cpp_service__executable_BUILD.gn b/devel/electron12/files/patch-services_service__manager_public_cpp_service__executable_BUILD.gn
similarity index 100%
rename from devel/electron11/files/patch-services_service__manager_public_cpp_service__executable_BUILD.gn
rename to devel/electron12/files/patch-services_service__manager_public_cpp_service__executable_BUILD.gn
diff --git a/devel/electron11/files/patch-services_tracing_public_cpp_perfetto_trace__time.cc b/devel/electron12/files/patch-services_tracing_public_cpp_perfetto_trace__time.cc
similarity index 100%
rename from devel/electron11/files/patch-services_tracing_public_cpp_perfetto_trace__time.cc
rename to devel/electron12/files/patch-services_tracing_public_cpp_perfetto_trace__time.cc
diff --git a/devel/electron11/files/patch-services_tracing_public_cpp_stack__sampling_tracing__sampler__profiler.cc b/devel/electron12/files/patch-services_tracing_public_cpp_stack__sampling_tracing__sampler__profiler.cc
similarity index 100%
rename from devel/electron11/files/patch-services_tracing_public_cpp_stack__sampling_tracing__sampler__profiler.cc
rename to devel/electron12/files/patch-services_tracing_public_cpp_stack__sampling_tracing__sampler__profiler.cc
diff --git a/devel/electron11/files/patch-services_video__capture_broadcasting__receiver.cc b/devel/electron12/files/patch-services_video__capture_broadcasting__receiver.cc
similarity index 100%
rename from devel/electron11/files/patch-services_video__capture_broadcasting__receiver.cc
rename to devel/electron12/files/patch-services_video__capture_broadcasting__receiver.cc
diff --git a/devel/electron11/files/patch-skia_ext_SkMemory__new__handler.cpp b/devel/electron12/files/patch-skia_ext_SkMemory__new__handler.cpp
similarity index 100%
rename from devel/electron11/files/patch-skia_ext_SkMemory__new__handler.cpp
rename to devel/electron12/files/patch-skia_ext_SkMemory__new__handler.cpp
diff --git a/devel/electron12/files/patch-third__party_angle_BUILD.gn b/devel/electron12/files/patch-third__party_angle_BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..c7098332a13859f330d08bc93c22031178041151
--- /dev/null
+++ b/devel/electron12/files/patch-third__party_angle_BUILD.gn
@@ -0,0 +1,19 @@
+--- third_party/angle/BUILD.gn.orig	2021-04-14 01:15:19 UTC
++++ third_party/angle/BUILD.gn
+@@ -194,7 +194,7 @@ config("extra_warnings") {
+       "-Wunreachable-code",
+       "-Wshorten-64-to-32",
+     ]
+-    if (!use_xcode_clang) {
++    if (!use_xcode_clang && !is_bsd) {
+       # Mac catalyst uses a clang version that doesn't have these.
+       cflags += [
+         "-Wdeprecated-copy",
+@@ -433,6 +433,7 @@ angle_static_library("angle_gpu_info_util") {
+         "X11",
+         "Xi",
+         "Xext",
++        "GL",
+       ]
+     }
+   }
diff --git a/devel/electron12/files/patch-third__party_angle_src_common_debug.h b/devel/electron12/files/patch-third__party_angle_src_common_debug.h
new file mode 100644
index 0000000000000000000000000000000000000000..f3617ef4524a6a357fe6327e1ed33e5517aacb9f
--- /dev/null
+++ b/devel/electron12/files/patch-third__party_angle_src_common_debug.h
@@ -0,0 +1,11 @@
+--- third_party/angle/src/common/debug.h.orig	2021-04-14 01:15:19 UTC
++++ third_party/angle/src/common/debug.h
+@@ -392,7 +392,7 @@ std::ostream &FmtHex(std::ostream &os, T value)
+ #    define ANGLE_DISABLE_STRUCT_PADDING_WARNINGS
+ #endif
+ 
+-#if defined(__clang__)
++#if defined(__clang__) && !defined(__FreeBSD__)
+ #    define ANGLE_DISABLE_SUGGEST_OVERRIDE_WARNINGS                               \
+         _Pragma("clang diagnostic push")                                          \
+             _Pragma("clang diagnostic ignored \"-Wsuggest-destructor-override\"") \
diff --git a/devel/electron11/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h b/devel/electron12/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h
similarity index 100%
rename from devel/electron11/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h
rename to devel/electron12/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h
diff --git a/devel/electron11/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp b/devel/electron12/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp
similarity index 100%
rename from devel/electron11/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp
rename to devel/electron12/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp
diff --git a/devel/electron11/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp b/devel/electron12/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp
similarity index 100%
rename from devel/electron11/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp
rename to devel/electron12/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp
diff --git a/devel/electron11/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp b/devel/electron12/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp
similarity index 100%
rename from devel/electron11/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp
rename to devel/electron12/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp
diff --git a/devel/electron11/files/patch-third__party_angle_src_libANGLE_Display.cpp b/devel/electron12/files/patch-third__party_angle_src_libANGLE_Display.cpp
similarity index 67%
rename from devel/electron11/files/patch-third__party_angle_src_libANGLE_Display.cpp
rename to devel/electron12/files/patch-third__party_angle_src_libANGLE_Display.cpp
index 52ac24149ef0fb46616f36feaee945bd23d81c1f..7b7e391f2aa1637a1293940ada3d2b1913d1e407 100644
--- a/devel/electron11/files/patch-third__party_angle_src_libANGLE_Display.cpp
+++ b/devel/electron12/files/patch-third__party_angle_src_libANGLE_Display.cpp
@@ -1,24 +1,24 @@
---- third_party/angle/src/libANGLE/Display.cpp.orig	2021-01-07 00:39:27 UTC
+--- third_party/angle/src/libANGLE/Display.cpp.orig	2021-04-14 01:15:19 UTC
 +++ third_party/angle/src/libANGLE/Display.cpp
 @@ -55,7 +55,7 @@
- #        include "libANGLE/renderer/gl/cgl/DisplayCGL.h"
- #    elif defined(ANGLE_PLATFORM_IOS)
- #        include "libANGLE/renderer/gl/eagl/DisplayEAGL.h"
+ #        include "libANGLE/renderer/gl/wgl/DisplayWGL.h"
+ #    elif defined(ANGLE_PLATFORM_MACOS) || defined(ANGLE_PLATFORM_IOS)
+ #        include "libANGLE/renderer/gl/apple/DisplayApple_api.h"
 -#    elif defined(ANGLE_PLATFORM_LINUX)
 +#    elif defined(ANGLE_PLATFORM_POSIX)
  #        include "libANGLE/renderer/gl/egl/DisplayEGL.h"
  #        if defined(ANGLE_USE_GBM)
  #            include "libANGLE/renderer/gl/egl/gbm/DisplayGbm.h"
-@@ -264,7 +264,7 @@ rx::DisplayImpl *CreateDisplayFromAttribs(EGLAttrib di
-             impl = new rx::DisplayCGL(state);
- #    elif defined(ANGLE_PLATFORM_IOS)
-             impl = new rx::DisplayEAGL(state);
+@@ -272,7 +272,7 @@ rx::DisplayImpl *CreateDisplayFromAttribs(EGLAttrib di
+             impl = rx::CreateDisplayCGLOrEAGL(state);
+             break;
+ 
 -#    elif defined(ANGLE_PLATFORM_LINUX)
 +#    elif defined(ANGLE_PLATFORM_POSIX)
  #        if defined(ANGLE_USE_GBM)
              if (platformType == 0)
              {
-@@ -305,7 +305,7 @@ rx::DisplayImpl *CreateDisplayFromAttribs(EGLAttrib di
+@@ -313,7 +313,7 @@ rx::DisplayImpl *CreateDisplayFromAttribs(EGLAttrib di
  #if defined(ANGLE_ENABLE_OPENGL)
  #    if defined(ANGLE_PLATFORM_WINDOWS)
              impl = new rx::DisplayWGL(state);
@@ -27,7 +27,7 @@
  #        if defined(ANGLE_USE_GBM)
              if (platformType == 0)
              {
-@@ -346,7 +346,7 @@ rx::DisplayImpl *CreateDisplayFromAttribs(EGLAttrib di
+@@ -354,7 +354,7 @@ rx::DisplayImpl *CreateDisplayFromAttribs(EGLAttrib di
              {
                  impl = rx::CreateVulkanWin32Display(state);
              }
@@ -36,7 +36,7 @@
  #        if defined(ANGLE_USE_X11)
              if (platformType == EGL_PLATFORM_X11_EXT && rx::IsVulkanXcbDisplayAvailable())
              {
-@@ -1612,7 +1612,7 @@ static ClientExtensions GenerateClientExtensions()
+@@ -1646,7 +1646,7 @@ static ClientExtensions GenerateClientExtensions()
      extensions.x11Visual = true;
  #endif
  
diff --git a/devel/electron11/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.cpp b/devel/electron12/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.cpp
similarity index 80%
rename from devel/electron11/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.cpp
rename to devel/electron12/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.cpp
index 55319a0ffa9a2f3a9491e6eb4b5dc8fca2a628f7..cfba83184d8f2f7e22301dd055f213445c681652 100644
--- a/devel/electron11/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.cpp
+++ b/devel/electron12/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.cpp
@@ -1,4 +1,4 @@
---- third_party/angle/src/libANGLE/renderer/driver_utils.cpp.orig	2021-01-07 00:39:27 UTC
+--- third_party/angle/src/libANGLE/renderer/driver_utils.cpp.orig	2021-04-14 01:15:19 UTC
 +++ third_party/angle/src/libANGLE/renderer/driver_utils.cpp
 @@ -17,7 +17,7 @@
  #    include <sys/system_properties.h>
@@ -9,7 +9,7 @@
  #    include <sys/utsname.h>
  #endif
  
-@@ -207,7 +207,7 @@ OSVersion GetMacOSVersion()
+@@ -213,7 +213,7 @@ OSVersion GetMacOSVersion()
  }
  #endif
  
@@ -18,7 +18,7 @@
  bool ParseLinuxOSVersion(const char *version, int *major, int *minor, int *patch)
  {
      errno = 0;  // reset global error flag.
-@@ -219,6 +219,14 @@ bool ParseLinuxOSVersion(const char *version, int *maj
+@@ -225,6 +225,14 @@ bool ParseLinuxOSVersion(const char *version, int *maj
      }
  
      *minor = static_cast<int>(strtol(next + 1, &next, 10));
@@ -33,7 +33,7 @@
      if (next == nullptr || *next != '.' || errno != 0)
      {
          return false;
-@@ -229,6 +237,7 @@ bool ParseLinuxOSVersion(const char *version, int *maj
+@@ -235,6 +243,7 @@ bool ParseLinuxOSVersion(const char *version, int *maj
      {
          return false;
      }
@@ -41,7 +41,7 @@
  
      return true;
  }
-@@ -236,7 +245,7 @@ bool ParseLinuxOSVersion(const char *version, int *maj
+@@ -242,7 +251,7 @@ bool ParseLinuxOSVersion(const char *version, int *maj
  
  OSVersion GetLinuxOSVersion()
  {
diff --git a/devel/electron11/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.h b/devel/electron12/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.h
similarity index 79%
rename from devel/electron11/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.h
rename to devel/electron12/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.h
index 47eb0ec0b29bc48396623c5252f624d532c0ca14..a4cacc651e2158b425c50f3e46094654c6ac78c2 100644
--- a/devel/electron11/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.h
+++ b/devel/electron12/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.h
@@ -1,6 +1,6 @@
---- third_party/angle/src/libANGLE/renderer/driver_utils.h.orig	2021-01-07 00:39:27 UTC
+--- third_party/angle/src/libANGLE/renderer/driver_utils.h.orig	2021-04-14 01:15:19 UTC
 +++ third_party/angle/src/libANGLE/renderer/driver_utils.h
-@@ -145,7 +145,7 @@ inline bool IsWindows()
+@@ -151,7 +151,7 @@ inline bool IsWindows()
  
  inline bool IsLinux()
  {
diff --git a/devel/electron11/files/patch-third__party_angle_src_libANGLE_renderer_vulkan_DisplayVk__api.h b/devel/electron12/files/patch-third__party_angle_src_libANGLE_renderer_vulkan_DisplayVk__api.h
similarity index 67%
rename from devel/electron11/files/patch-third__party_angle_src_libANGLE_renderer_vulkan_DisplayVk__api.h
rename to devel/electron12/files/patch-third__party_angle_src_libANGLE_renderer_vulkan_DisplayVk__api.h
index 08e9c75aa96b3ace8fdfd976ab003c3e7da476ba..a2b1cd79d98402fc0e03aef8355ad0e69e26f06b 100644
--- a/devel/electron11/files/patch-third__party_angle_src_libANGLE_renderer_vulkan_DisplayVk__api.h
+++ b/devel/electron12/files/patch-third__party_angle_src_libANGLE_renderer_vulkan_DisplayVk__api.h
@@ -1,6 +1,6 @@
---- third_party/angle/src/libANGLE/renderer/vulkan/DisplayVk_api.h.orig	2021-01-07 00:39:27 UTC
+--- third_party/angle/src/libANGLE/renderer/vulkan/DisplayVk_api.h.orig	2021-04-14 01:15:19 UTC
 +++ third_party/angle/src/libANGLE/renderer/vulkan/DisplayVk_api.h
-@@ -19,10 +19,10 @@ bool IsVulkanWin32DisplayAvailable();
+@@ -19,7 +19,7 @@ bool IsVulkanWin32DisplayAvailable();
  DisplayImpl *CreateVulkanWin32Display(const egl::DisplayState &state);
  #endif  // defined(ANGLE_PLATFORM_WINDOWS)
  
@@ -8,6 +8,11 @@
 +#if defined(ANGLE_PLATFORM_POSIX)
  bool IsVulkanXcbDisplayAvailable();
  DisplayImpl *CreateVulkanXcbDisplay(const egl::DisplayState &state);
+ 
+@@ -28,7 +28,7 @@ DisplayImpl *CreateVulkanSimpleDisplay(const egl::Disp
+ 
+ bool IsVulkanHeadlessDisplayAvailable();
+ DisplayImpl *CreateVulkanHeadlessDisplay(const egl::DisplayState &state);
 -#endif  // defined(ANGLE_PLATFORM_LINUX)
 +#endif  // defined(ANGLE_PLATFORM_POSIX)
  
diff --git a/devel/electron12/files/patch-third__party_blink_common_renderer__preferences_renderer__preferences__mojom__traits.cc b/devel/electron12/files/patch-third__party_blink_common_renderer__preferences_renderer__preferences__mojom__traits.cc
new file mode 100644
index 0000000000000000000000000000000000000000..376991c827e36d2e3a72c7a4ec3f445f997e5ec4
--- /dev/null
+++ b/devel/electron12/files/patch-third__party_blink_common_renderer__preferences_renderer__preferences__mojom__traits.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/common/renderer_preferences/renderer_preferences_mojom_traits.cc.orig	2021-04-14 01:08:54 UTC
++++ third_party/blink/common/renderer_preferences/renderer_preferences_mojom_traits.cc
+@@ -64,7 +64,7 @@ bool StructTraits<blink::mojom::RendererPreferencesDat
+   if (!data.ReadAcceptLanguages(&out->accept_languages))
+     return false;
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   if (!data.ReadSystemFontFamilyName(&out->system_font_family_name))
+     return false;
+ #endif
diff --git a/devel/electron12/files/patch-third__party_blink_public_common_renderer__preferences_renderer__preferences.h b/devel/electron12/files/patch-third__party_blink_public_common_renderer__preferences_renderer__preferences.h
new file mode 100644
index 0000000000000000000000000000000000000000..b03bcd7dc427619533faa0add0ad908f85f3dcd8
--- /dev/null
+++ b/devel/electron12/files/patch-third__party_blink_public_common_renderer__preferences_renderer__preferences.h
@@ -0,0 +1,11 @@
+--- third_party/blink/public/common/renderer_preferences/renderer_preferences.h.orig	2021-04-14 01:08:55 UTC
++++ third_party/blink/public/common/renderer_preferences/renderer_preferences.h
+@@ -49,7 +49,7 @@ struct BLINK_COMMON_EXPORT RendererPreferences {
+   bool webrtc_allow_legacy_tls_protocols{false};
+   UserAgentOverride user_agent_override;
+   std::string accept_languages;
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   std::string system_font_family_name;
+ #endif
+ #if defined(OS_WIN)
diff --git a/devel/electron12/files/patch-third__party_blink_public_common_renderer__preferences_renderer__preferences__mojom__traits.h b/devel/electron12/files/patch-third__party_blink_public_common_renderer__preferences_renderer__preferences__mojom__traits.h
new file mode 100644
index 0000000000000000000000000000000000000000..206a5ed00b06fe6593c5b4624ec8bacef14bcde0
--- /dev/null
+++ b/devel/electron12/files/patch-third__party_blink_public_common_renderer__preferences_renderer__preferences__mojom__traits.h
@@ -0,0 +1,11 @@
+--- third_party/blink/public/common/renderer_preferences/renderer_preferences_mojom_traits.h.orig	2021-04-14 01:08:55 UTC
++++ third_party/blink/public/common/renderer_preferences/renderer_preferences_mojom_traits.h
+@@ -154,7 +154,7 @@ struct BLINK_COMMON_EXPORT
+     return data.accept_languages;
+   }
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   static const std::string& system_font_family_name(
+       const ::blink::RendererPreferences& data) {
+     return data.system_font_family_name;
diff --git a/devel/electron12/files/patch-third__party_blink_public_platform_platform.h b/devel/electron12/files/patch-third__party_blink_public_platform_platform.h
new file mode 100644
index 0000000000000000000000000000000000000000..25d74ea3b80e004282fe13d58c38b6209c8decdf
--- /dev/null
+++ b/devel/electron12/files/patch-third__party_blink_public_platform_platform.h
@@ -0,0 +1,11 @@
+--- third_party/blink/public/platform/platform.h.orig	2021-04-22 07:51:51 UTC
++++ third_party/blink/public/platform/platform.h
+@@ -393,7 +393,7 @@ class BLINK_PLATFORM_EXPORT Platform {
+     return nullptr;
+   }
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   // This is called after the compositor thread is created, so the embedder
+   // can initiate an IPC to change its thread priority (on Linux we can't
+   // increase the nice value, so we need to ask the browser process). This
diff --git a/devel/electron12/files/patch-third__party_blink_renderer_BUILD.gn b/devel/electron12/files/patch-third__party_blink_renderer_BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..4af57dfac43c7caf60d4b8465e982ade49495050
--- /dev/null
+++ b/devel/electron12/files/patch-third__party_blink_renderer_BUILD.gn
@@ -0,0 +1,21 @@
+--- third_party/blink/renderer/BUILD.gn.orig	2021-04-14 01:08:55 UTC
++++ third_party/blink/renderer/BUILD.gn
+@@ -46,10 +46,16 @@ config("inside_blink") {
+       "-Wconversion",
+       "-Wno-float-conversion",
+       "-Wno-sign-conversion",
+-      "-Wno-implicit-float-conversion",
+-      "-Wno-implicit-int-conversion",
+       "-Wno-shorten-64-to-32",
+     ]
++
++    if (is_bsd) {
++      cflags += [
++        "-Wno-implicit-float-conversion",
++        "-Wno-implicit-int-conversion",
++        "-Wno-implicit-int-float-conversion",
++      ]
++    }
+ 
+     if (!is_chromeos_ash ||
+         default_toolchain != "//build/toolchain/cros:target") {
diff --git a/devel/electron11/files/patch-third__party_blink_renderer_bindings_scripts_bind__gen_style__format.py b/devel/electron12/files/patch-third__party_blink_renderer_bindings_scripts_bind__gen_style__format.py
similarity index 100%
rename from devel/electron11/files/patch-third__party_blink_renderer_bindings_scripts_bind__gen_style__format.py
rename to devel/electron12/files/patch-third__party_blink_renderer_bindings_scripts_bind__gen_style__format.py
diff --git a/devel/electron11/files/patch-third__party_blink_renderer_controller_blink__initializer.cc b/devel/electron12/files/patch-third__party_blink_renderer_controller_blink__initializer.cc
similarity index 89%
rename from devel/electron11/files/patch-third__party_blink_renderer_controller_blink__initializer.cc
rename to devel/electron12/files/patch-third__party_blink_renderer_controller_blink__initializer.cc
index b2aabb32945be8b20c7d9b0e029dd7e31e676f9c..b218329618d2663377ba89a7bb955db2ea996554 100644
--- a/devel/electron11/files/patch-third__party_blink_renderer_controller_blink__initializer.cc
+++ b/devel/electron12/files/patch-third__party_blink_renderer_controller_blink__initializer.cc
@@ -1,6 +1,6 @@
---- third_party/blink/renderer/controller/blink_initializer.cc.orig	2021-01-07 00:36:41 UTC
+--- third_party/blink/renderer/controller/blink_initializer.cc.orig	2021-04-14 01:08:55 UTC
 +++ third_party/blink/renderer/controller/blink_initializer.cc
-@@ -68,11 +68,11 @@
+@@ -67,11 +67,11 @@
  #include "third_party/blink/renderer/controller/oom_intervention_impl.h"
  #endif
  
@@ -14,7 +14,7 @@
      defined(OS_MAC) || defined(OS_WIN)
  #include "third_party/blink/renderer/controller/highest_pmf_reporter.h"
  #include "third_party/blink/renderer/controller/user_level_memory_pressure_signal_generator.h"
-@@ -154,7 +154,7 @@ void InitializeCommon(Platform* platform, mojo::Binder
+@@ -153,7 +153,7 @@ void InitializeCommon(Platform* platform, mojo::Binder
    CrashMemoryMetricsReporterImpl::Instance();
  #endif
  
@@ -23,7 +23,7 @@
      defined(OS_MAC) || defined(OS_WIN)
    // Initialize UserLevelMemoryPressureSignalGenerator so it starts monitoring.
    if (UserLevelMemoryPressureSignalGenerator::Enabled())
-@@ -212,7 +212,7 @@ void BlinkInitializer::RegisterInterfaces(mojo::Binder
+@@ -218,7 +218,7 @@ void BlinkInitializer::RegisterInterfaces(mojo::Binder
                main_thread->GetTaskRunner());
  #endif
  
diff --git a/devel/electron11/files/patch-third__party_blink_renderer_controller_memory__usage__monitor__posix.cc b/devel/electron12/files/patch-third__party_blink_renderer_controller_memory__usage__monitor__posix.cc
similarity index 100%
rename from devel/electron11/files/patch-third__party_blink_renderer_controller_memory__usage__monitor__posix.cc
rename to devel/electron12/files/patch-third__party_blink_renderer_controller_memory__usage__monitor__posix.cc
diff --git a/devel/electron11/files/patch-third__party_blink_renderer_controller_memory__usage__monitor__posix.h b/devel/electron12/files/patch-third__party_blink_renderer_controller_memory__usage__monitor__posix.h
similarity index 100%
rename from devel/electron11/files/patch-third__party_blink_renderer_controller_memory__usage__monitor__posix.h
rename to devel/electron12/files/patch-third__party_blink_renderer_controller_memory__usage__monitor__posix.h
diff --git a/devel/electron11/files/patch-third__party_blink_renderer_core_clipboard_system__clipboard.cc b/devel/electron12/files/patch-third__party_blink_renderer_core_clipboard_system__clipboard.cc
similarity index 55%
rename from devel/electron11/files/patch-third__party_blink_renderer_core_clipboard_system__clipboard.cc
rename to devel/electron12/files/patch-third__party_blink_renderer_core_clipboard_system__clipboard.cc
index a432d6c9947f5dbc1efec8e04fce528f17d29632..fc8daf8d0fd7497414cef1d19bddcbf705828cf2 100644
--- a/devel/electron11/files/patch-third__party_blink_renderer_core_clipboard_system__clipboard.cc
+++ b/devel/electron12/files/patch-third__party_blink_renderer_core_clipboard_system__clipboard.cc
@@ -1,15 +1,15 @@
---- third_party/blink/renderer/core/clipboard/system_clipboard.cc.orig	2021-01-07 00:36:41 UTC
+--- third_party/blink/renderer/core/clipboard/system_clipboard.cc.orig	2021-04-14 01:08:55 UTC
 +++ third_party/blink/renderer/core/clipboard/system_clipboard.cc
-@@ -41,10 +41,10 @@ SystemClipboard::SystemClipboard(LocalFrame* frame)
+@@ -43,10 +43,10 @@ SystemClipboard::SystemClipboard(LocalFrame* frame)
    frame->GetBrowserInterfaceBroker().GetInterface(
        clipboard_.BindNewPipeAndPassReceiver(
            frame->GetTaskRunner(TaskType::kUserInteraction)));
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
    is_selection_buffer_available_ =
        frame->GetSettings()->GetSelectionClipboardBufferAvailable();
--#endif  // defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#endif  // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#endif  // defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
  }
  
  bool SystemClipboard::IsSelectionMode() const {
diff --git a/devel/electron11/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc b/devel/electron12/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc
similarity index 100%
rename from devel/electron11/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc
rename to devel/electron12/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc
diff --git a/devel/electron12/files/patch-third__party_blink_renderer_core_exported_web__view__impl.cc b/devel/electron12/files/patch-third__party_blink_renderer_core_exported_web__view__impl.cc
new file mode 100644
index 0000000000000000000000000000000000000000..7cc9bb4747a49a28151110bafeda146d0667cb22
--- /dev/null
+++ b/devel/electron12/files/patch-third__party_blink_renderer_core_exported_web__view__impl.cc
@@ -0,0 +1,26 @@
+--- third_party/blink/renderer/core/exported/web_view_impl.cc.orig	2021-04-22 07:51:51 UTC
++++ third_party/blink/renderer/core/exported/web_view_impl.cc
+@@ -411,7 +411,7 @@ ui::mojom::blink::WindowOpenDisposition NavigationPoli
+ #if !defined(OS_MAC) && !defined(OS_WIN)
+ SkFontHinting RendererPreferencesToSkiaHinting(
+     const blink::RendererPreferences& prefs) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+   if (!prefs.should_antialias_text) {
+     // When anti-aliasing is off, GTK maps all non-zero hinting settings to
+     // 'Normal' hinting so we do the same. Otherwise, folks who have 'Slight'
+@@ -3079,12 +3079,12 @@ void WebViewImpl::UpdateFontRenderingFromRendererPrefs
+       gfx::FontRenderParams::SUBPIXEL_RENDERING_NONE);
+   WebFontRenderStyle::SetSubpixelPositioning(
+       renderer_preferences_.use_subpixel_positioning);
+-#if defined(OS_LINUX) && !defined(OS_ANDROID)
++#if (defined(OS_LINUX) && !defined(OS_ANDROID)) || defined(OS_BSD)
+   if (!renderer_preferences_.system_font_family_name.empty()) {
+     WebFontRenderStyle::SetSystemFontFamily(blink::WebString::FromUTF8(
+         renderer_preferences_.system_font_family_name));
+   }
+-#endif  // defined(OS_LINUX) && !defined(OS_ANDROID)
++#endif  // (defined(OS_LINUX) && !defined(OS_ANDROID)) || defined(OS_BSD)
+ #endif  // defined(OS_WIN)
+ #endif  // !defined(OS_MAC)
+ }
diff --git a/devel/electron11/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc b/devel/electron12/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc
similarity index 100%
rename from devel/electron11/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc
rename to devel/electron12/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc
diff --git a/devel/electron11/files/patch-third__party_blink_renderer_core_html_forms_internal__popup__menu.cc b/devel/electron12/files/patch-third__party_blink_renderer_core_html_forms_internal__popup__menu.cc
similarity index 100%
rename from devel/electron11/files/patch-third__party_blink_renderer_core_html_forms_internal__popup__menu.cc
rename to devel/electron12/files/patch-third__party_blink_renderer_core_html_forms_internal__popup__menu.cc
diff --git a/devel/electron11/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc b/devel/electron12/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc
similarity index 100%
rename from devel/electron11/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc
rename to devel/electron12/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc
diff --git a/devel/electron11/files/patch-third__party_blink_renderer_core_layout_layout__view.cc b/devel/electron12/files/patch-third__party_blink_renderer_core_layout_layout__view.cc
similarity index 90%
rename from devel/electron11/files/patch-third__party_blink_renderer_core_layout_layout__view.cc
rename to devel/electron12/files/patch-third__party_blink_renderer_core_layout_layout__view.cc
index 2395dd6957f618ad5fcaffcdfb3e48df0b206c0a..bd0ea24eb4d8aec1e097292d4846876a17220721 100644
--- a/devel/electron11/files/patch-third__party_blink_renderer_core_layout_layout__view.cc
+++ b/devel/electron12/files/patch-third__party_blink_renderer_core_layout_layout__view.cc
@@ -1,6 +1,6 @@
---- third_party/blink/renderer/core/layout/layout_view.cc.orig	2021-01-07 00:36:42 UTC
+--- third_party/blink/renderer/core/layout/layout_view.cc.orig	2021-04-14 01:08:55 UTC
 +++ third_party/blink/renderer/core/layout/layout_view.cc
-@@ -62,7 +62,7 @@
+@@ -61,7 +61,7 @@
  #include "third_party/blink/renderer/platform/instrumentation/tracing/traced_value.h"
  #include "third_party/blink/renderer/platform/runtime_enabled_features.h"
  
@@ -9,7 +9,7 @@
  #include "third_party/blink/renderer/platform/fonts/font_cache.h"
  #endif
  
-@@ -347,7 +347,7 @@ void LayoutView::UpdateLayout() {
+@@ -341,7 +341,7 @@ void LayoutView::UpdateLayout() {
    DCHECK(!layout_state_);
    LayoutState root_layout_state(*this);
  
diff --git a/devel/electron11/files/patch-third__party_blink_renderer_core_paint_paint__layer.cc b/devel/electron12/files/patch-third__party_blink_renderer_core_paint_paint__layer.cc
similarity index 100%
rename from devel/electron11/files/patch-third__party_blink_renderer_core_paint_paint__layer.cc
rename to devel/electron12/files/patch-third__party_blink_renderer_core_paint_paint__layer.cc
diff --git a/devel/electron11/files/patch-third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc b/devel/electron12/files/patch-third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc
similarity index 73%
rename from devel/electron11/files/patch-third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc
rename to devel/electron12/files/patch-third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc
index b76013dd3c756b2d0f3dd8f8b90f8e4eb88a2631..a4ac4082cd94729f9a16d504064fa21a0b1cec15 100644
--- a/devel/electron11/files/patch-third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc
+++ b/devel/electron12/files/patch-third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc
@@ -1,11 +1,11 @@
---- third_party/blink/renderer/core/scroll/scrollbar_theme_aura.cc.orig	2021-01-07 00:36:42 UTC
+--- third_party/blink/renderer/core/scroll/scrollbar_theme_aura.cc.orig	2021-04-14 01:08:56 UTC
 +++ third_party/blink/renderer/core/scroll/scrollbar_theme_aura.cc
 @@ -137,7 +137,7 @@ bool ScrollbarThemeAura::SupportsDragSnapBack() const 
  // Disable snapback on desktop Linux to better integrate with the desktop
  // behavior. Typically, Linux apps do not implement scrollbar snapback (this
  // is true for at least GTK and QT apps).
--#if (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
    return false;
  #else
    return true;
@@ -13,8 +13,8 @@
  
  bool ScrollbarThemeAura::ShouldCenterOnThumb(const Scrollbar& scrollbar,
                                               const WebMouseEvent& event) {
--#if (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+#if ((defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS))
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
    if (event.button == WebPointerProperties::Button::kMiddle)
      return true;
  #endif
diff --git a/devel/electron11/files/patch-third__party_blink_renderer_modules_media_audio_web__audio__device__factory.cc b/devel/electron12/files/patch-third__party_blink_renderer_modules_media_audio_web__audio__device__factory.cc
similarity index 57%
rename from devel/electron11/files/patch-third__party_blink_renderer_modules_media_audio_web__audio__device__factory.cc
rename to devel/electron12/files/patch-third__party_blink_renderer_modules_media_audio_web__audio__device__factory.cc
index 372910889726403d92515f68469d72e851403dda..35ae80b06a98aadbafb055a642347e796c2ae577 100644
--- a/devel/electron11/files/patch-third__party_blink_renderer_modules_media_audio_web__audio__device__factory.cc
+++ b/devel/electron12/files/patch-third__party_blink_renderer_modules_media_audio_web__audio__device__factory.cc
@@ -1,11 +1,11 @@
---- third_party/blink/renderer/modules/media/audio/web_audio_device_factory.cc.orig	2021-01-07 00:36:42 UTC
+--- third_party/blink/renderer/modules/media/audio/web_audio_device_factory.cc.orig	2021-04-14 01:08:56 UTC
 +++ third_party/blink/renderer/modules/media/audio/web_audio_device_factory.cc
 @@ -33,7 +33,7 @@ WebAudioDeviceFactory* WebAudioDeviceFactory::factory_
+ 
  namespace {
  
- #if defined(OS_WIN) || defined(OS_MAC) || \
--    (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+-#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD) || \
+     BUILDFLAG(IS_CHROMEOS_LACROS)
  // Due to driver deadlock issues on Windows (http://crbug/422522) there is a
  // chance device authorization response is never received from the browser side.
- // In this case we will time out, to avoid renderer hang forever waiting for
diff --git a/devel/electron11/files/patch-third__party_blink_renderer_modules_mediastream_processed__local__audio__source.cc b/devel/electron12/files/patch-third__party_blink_renderer_modules_mediastream_processed__local__audio__source.cc
similarity index 62%
rename from devel/electron11/files/patch-third__party_blink_renderer_modules_mediastream_processed__local__audio__source.cc
rename to devel/electron12/files/patch-third__party_blink_renderer_modules_mediastream_processed__local__audio__source.cc
index 9289ad9b59a934bf79a6fd63d1c3c1434a5c7e35..ec2af282ebe8fab1a2d86a9399601f9cafd60ed6 100644
--- a/devel/electron11/files/patch-third__party_blink_renderer_modules_mediastream_processed__local__audio__source.cc
+++ b/devel/electron12/files/patch-third__party_blink_renderer_modules_mediastream_processed__local__audio__source.cc
@@ -1,11 +1,11 @@
---- third_party/blink/renderer/modules/mediastream/processed_local_audio_source.cc.orig	2021-01-07 00:36:42 UTC
+--- third_party/blink/renderer/modules/mediastream/processed_local_audio_source.cc.orig	2021-04-14 01:08:56 UTC
 +++ third_party/blink/renderer/modules/mediastream/processed_local_audio_source.cc
-@@ -408,7 +408,7 @@ void ProcessedLocalAudioSource::CaptureUsingProcessor(
+@@ -409,7 +409,7 @@ void ProcessedLocalAudioSource::CaptureUsingProcessor(
      bool key_pressed) {
  #if defined(OS_WIN) || defined(OS_MAC)
    DCHECK_LE(volume, 1.0);
--#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_OPENBSD)
-+#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_OPENBSD)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_OPENBSD) || defined(OS_BSD)
    // We have a special situation on Linux where the microphone volume can be
    // "higher than maximum". The input volume slider in the sound preference
    // allows the user to set a scaling that is higher than 100%. It means that
diff --git a/devel/electron11/files/patch-third__party_blink_renderer_modules_peerconnection_webrtc__audio__renderer__test.cc b/devel/electron12/files/patch-third__party_blink_renderer_modules_peerconnection_webrtc__audio__renderer__test.cc
similarity index 71%
rename from devel/electron11/files/patch-third__party_blink_renderer_modules_peerconnection_webrtc__audio__renderer__test.cc
rename to devel/electron12/files/patch-third__party_blink_renderer_modules_peerconnection_webrtc__audio__renderer__test.cc
index debda24ba3f900d4c7cb6b2c98e1f94cd6a00f4a..588472d98ee3c625b9a5ef729074417630cc2213 100644
--- a/devel/electron11/files/patch-third__party_blink_renderer_modules_peerconnection_webrtc__audio__renderer__test.cc
+++ b/devel/electron12/files/patch-third__party_blink_renderer_modules_peerconnection_webrtc__audio__renderer__test.cc
@@ -1,7 +1,7 @@
---- third_party/blink/renderer/modules/peerconnection/webrtc_audio_renderer_test.cc.orig	2021-01-07 00:36:42 UTC
+--- third_party/blink/renderer/modules/peerconnection/webrtc_audio_renderer_test.cc.orig	2021-04-14 01:08:56 UTC
 +++ third_party/blink/renderer/modules/peerconnection/webrtc_audio_renderer_test.cc
-@@ -272,7 +272,7 @@ TEST_F(MAYBE_WebRtcAudioRendererTest, MultipleRenderer
- TEST_F(MAYBE_WebRtcAudioRendererTest, VerifySinkParameters) {
+@@ -283,7 +283,7 @@ TEST_F(MAYBE_WebRtcAudioRendererTest, DISABLED_Multipl
+ TEST_F(MAYBE_WebRtcAudioRendererTest, DISABLED_VerifySinkParameters) {
    SetupRenderer(kDefaultOutputDeviceId);
    renderer_proxy_->Start();
 -#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || \
diff --git a/devel/electron11/files/patch-third__party_blink_renderer_modules_webaudio_audio__worklet__thread__test.cc b/devel/electron12/files/patch-third__party_blink_renderer_modules_webaudio_audio__worklet__thread__test.cc
similarity index 88%
rename from devel/electron11/files/patch-third__party_blink_renderer_modules_webaudio_audio__worklet__thread__test.cc
rename to devel/electron12/files/patch-third__party_blink_renderer_modules_webaudio_audio__worklet__thread__test.cc
index a3b2c98a99ae3fcba7ee8900bcbd9c06b3640c1f..f6b3157124b26c639fa3900c3edfa80c1ec34658 100644
--- a/devel/electron11/files/patch-third__party_blink_renderer_modules_webaudio_audio__worklet__thread__test.cc
+++ b/devel/electron12/files/patch-third__party_blink_renderer_modules_webaudio_audio__worklet__thread__test.cc
@@ -1,6 +1,6 @@
---- third_party/blink/renderer/modules/webaudio/audio_worklet_thread_test.cc.orig	2021-01-07 00:36:43 UTC
+--- third_party/blink/renderer/modules/webaudio/audio_worklet_thread_test.cc.orig	2021-04-14 01:08:56 UTC
 +++ third_party/blink/renderer/modules/webaudio/audio_worklet_thread_test.cc
-@@ -404,8 +404,8 @@ class AudioWorkletThreadPriorityTest
+@@ -430,8 +430,8 @@ class AudioWorkletThreadPriorityTest
          base::PlatformThread::GetCurrentThreadPriority();
  
      // TODO(crbug.com/1022888): The worklet thread priority is always NORMAL
diff --git a/devel/electron12/files/patch-third__party_blink_renderer_modules_webgl_webgl__webcodecs__video__frame.cc b/devel/electron12/files/patch-third__party_blink_renderer_modules_webgl_webgl__webcodecs__video__frame.cc
new file mode 100644
index 0000000000000000000000000000000000000000..e4d8a5572b5b29f8edbb0ca2f09023b80abbb7cb
--- /dev/null
+++ b/devel/electron12/files/patch-third__party_blink_renderer_modules_webgl_webgl__webcodecs__video__frame.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/modules/webgl/webgl_webcodecs_video_frame.cc.orig	2021-04-14 01:08:56 UTC
++++ third_party/blink/renderer/modules/webgl/webgl_webcodecs_video_frame.cc
+@@ -235,7 +235,7 @@ WebGLExtensionName WebGLWebCodecsVideoFrame::GetName()
+ }
+ 
+ bool WebGLWebCodecsVideoFrame::Supported(WebGLRenderingContextBase* context) {
+-#if defined(OS_LINUX) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+   // TODO(jie.a.chen@intel.com): Add Linux support.
+   return false;
+ #else
diff --git a/devel/electron11/files/patch-third__party_blink_renderer_platform_BUILD.gn b/devel/electron12/files/patch-third__party_blink_renderer_platform_BUILD.gn
similarity index 62%
rename from devel/electron11/files/patch-third__party_blink_renderer_platform_BUILD.gn
rename to devel/electron12/files/patch-third__party_blink_renderer_platform_BUILD.gn
index 2f05c3e587c2c53ab9da9fa34e6a30321ccdc5eb..a2fc26d2745659a983738c33d78234208ee887c5 100644
--- a/devel/electron11/files/patch-third__party_blink_renderer_platform_BUILD.gn
+++ b/devel/electron12/files/patch-third__party_blink_renderer_platform_BUILD.gn
@@ -1,6 +1,6 @@
---- third_party/blink/renderer/platform/BUILD.gn.orig	2021-01-07 00:36:43 UTC
+--- third_party/blink/renderer/platform/BUILD.gn.orig	2021-04-14 01:08:56 UTC
 +++ third_party/blink/renderer/platform/BUILD.gn
-@@ -110,6 +110,7 @@ executable("character_data_generator") {
+@@ -106,6 +106,7 @@ executable("character_data_generator") {
      "//build/win:default_exe_manifest",
      "//third_party/icu",
    ]
diff --git a/devel/electron11/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc b/devel/electron12/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc
similarity index 100%
rename from devel/electron11/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc
rename to devel/electron12/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc
diff --git a/devel/electron11/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h b/devel/electron12/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h
similarity index 91%
rename from devel/electron11/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h
rename to devel/electron12/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h
index c7bf91cb622766d1d07b8a819b3079ad178dd8ef..110baca8e46e616263a933502e8b0fd760c71d0c 100644
--- a/devel/electron11/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h
+++ b/devel/electron12/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h
@@ -1,4 +1,4 @@
---- third_party/blink/renderer/platform/fonts/font_cache.h.orig	2021-01-07 00:36:43 UTC
+--- third_party/blink/renderer/platform/fonts/font_cache.h.orig	2021-04-14 01:08:56 UTC
 +++ third_party/blink/renderer/platform/fonts/font_cache.h
 @@ -58,7 +58,7 @@
  #include "third_party/skia/include/core/SkFontMgr.h"
@@ -9,7 +9,7 @@
  #include "ui/gfx/font_fallback_linux.h"
  #endif
  
-@@ -167,7 +167,7 @@ class PLATFORM_EXPORT FontCache {
+@@ -173,7 +173,7 @@ class PLATFORM_EXPORT FontCache {
    sk_sp<SkFontMgr> FontManager() { return font_manager_; }
    static void SetFontManager(sk_sp<SkFontMgr>);
  
@@ -18,7 +18,7 @@
    // These are needed for calling QueryRenderStyleForStrike, since
    // gfx::GetFontRenderParams makes distinctions based on DSF.
    static float DeviceScaleFactor() { return device_scale_factor_; }
-@@ -242,11 +242,11 @@ class PLATFORM_EXPORT FontCache {
+@@ -248,11 +248,11 @@ class PLATFORM_EXPORT FontCache {
        const FontDescription&);
  #endif  // defined(OS_ANDROID)
  
@@ -32,7 +32,7 @@
  
    scoped_refptr<SimpleFontData> FontDataFromFontPlatformData(
        const FontPlatformData*,
-@@ -320,12 +320,12 @@ class PLATFORM_EXPORT FontCache {
+@@ -326,12 +326,12 @@ class PLATFORM_EXPORT FontCache {
                                     const FontFaceCreationParams&,
                                     std::string& name);
  
@@ -47,7 +47,7 @@
  
    scoped_refptr<SimpleFontData> FallbackOnStandardFontStyle(
        const FontDescription&,
-@@ -365,7 +365,7 @@ class PLATFORM_EXPORT FontCache {
+@@ -371,7 +371,7 @@ class PLATFORM_EXPORT FontCache {
    std::unique_ptr<FallbackFamilyStyleCache> fallback_params_cache_;
  #endif  // defined(OS_WIN)
  
diff --git a/devel/electron11/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc b/devel/electron12/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc
similarity index 100%
rename from devel/electron11/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc
rename to devel/electron12/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc
diff --git a/devel/electron11/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc b/devel/electron12/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc
similarity index 100%
rename from devel/electron11/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc
rename to devel/electron12/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc
diff --git a/devel/electron11/files/patch-third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc b/devel/electron12/files/patch-third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc
similarity index 100%
rename from devel/electron11/files/patch-third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc
rename to devel/electron12/files/patch-third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc
diff --git a/devel/electron11/files/patch-third__party_blink_renderer_platform_fonts_shaping_harfbuzz__shaper__test.cc b/devel/electron12/files/patch-third__party_blink_renderer_platform_fonts_shaping_harfbuzz__shaper__test.cc
similarity index 100%
rename from devel/electron11/files/patch-third__party_blink_renderer_platform_fonts_shaping_harfbuzz__shaper__test.cc
rename to devel/electron12/files/patch-third__party_blink_renderer_platform_fonts_shaping_harfbuzz__shaper__test.cc
diff --git a/devel/electron11/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc b/devel/electron12/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc
similarity index 100%
rename from devel/electron11/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc
rename to devel/electron12/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc
diff --git a/devel/electron11/files/patch-third__party_blink_renderer_platform_graphics_image__frame__generator__test.cc b/devel/electron12/files/patch-third__party_blink_renderer_platform_graphics_image__frame__generator__test.cc
similarity index 100%
rename from devel/electron11/files/patch-third__party_blink_renderer_platform_graphics_image__frame__generator__test.cc
rename to devel/electron12/files/patch-third__party_blink_renderer_platform_graphics_image__frame__generator__test.cc
diff --git a/devel/electron11/files/patch-third__party_blink_renderer_platform_graphics_video__frame__submitter.cc b/devel/electron12/files/patch-third__party_blink_renderer_platform_graphics_video__frame__submitter.cc
similarity index 100%
rename from devel/electron11/files/patch-third__party_blink_renderer_platform_graphics_video__frame__submitter.cc
rename to devel/electron12/files/patch-third__party_blink_renderer_platform_graphics_video__frame__submitter.cc
diff --git a/devel/electron12/files/patch-third__party_blink_renderer_platform_scheduler_common_thread.cc b/devel/electron12/files/patch-third__party_blink_renderer_platform_scheduler_common_thread.cc
new file mode 100644
index 0000000000000000000000000000000000000000..c2d9ee447f4706cc6e37d97cd8809322e5b4a952
--- /dev/null
+++ b/devel/electron12/files/patch-third__party_blink_renderer_platform_scheduler_common_thread.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/platform/scheduler/common/thread.cc.orig	2021-04-14 01:08:56 UTC
++++ third_party/blink/renderer/platform/scheduler/common/thread.cc
+@@ -96,7 +96,7 @@ void Thread::CreateAndSetCompositorThread() {
+       std::make_unique<scheduler::CompositorThread>(params);
+   compositor_thread->Init();
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   if (base::FeatureList::IsEnabled(
+           features::kBlinkCompositorUseDisplayThreadPriority)) {
+     compositor_thread->GetTaskRunner()->PostTaskAndReplyWithResult(
diff --git a/devel/electron11/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h b/devel/electron12/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h
similarity index 100%
rename from devel/electron11/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h
rename to devel/electron12/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h
diff --git a/devel/electron11/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc b/devel/electron12/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc
similarity index 100%
rename from devel/electron11/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc
rename to devel/electron12/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc
diff --git a/devel/electron11/files/patch-third__party_blink_renderer_platform_wtf_threading__pthreads.cc b/devel/electron12/files/patch-third__party_blink_renderer_platform_wtf_threading__pthreads.cc
similarity index 100%
rename from devel/electron11/files/patch-third__party_blink_renderer_platform_wtf_threading__pthreads.cc
rename to devel/electron12/files/patch-third__party_blink_renderer_platform_wtf_threading__pthreads.cc
diff --git a/devel/electron11/files/patch-third__party_boringssl_src_crypto_cpu-aarch64-linux.c b/devel/electron12/files/patch-third__party_boringssl_src_crypto_cpu-aarch64-linux.c
similarity index 100%
rename from devel/electron11/files/patch-third__party_boringssl_src_crypto_cpu-aarch64-linux.c
rename to devel/electron12/files/patch-third__party_boringssl_src_crypto_cpu-aarch64-linux.c
diff --git a/devel/electron11/files/patch-third__party_boringssl_src_crypto_ex__data.c b/devel/electron12/files/patch-third__party_boringssl_src_crypto_ex__data.c
similarity index 100%
rename from devel/electron11/files/patch-third__party_boringssl_src_crypto_ex__data.c
rename to devel/electron12/files/patch-third__party_boringssl_src_crypto_ex__data.c
diff --git a/devel/electron11/files/patch-third__party_breakpad_breakpad_src_common_simple__string__dictionary.h b/devel/electron12/files/patch-third__party_breakpad_breakpad_src_common_simple__string__dictionary.h
similarity index 100%
rename from devel/electron11/files/patch-third__party_breakpad_breakpad_src_common_simple__string__dictionary.h
rename to devel/electron12/files/patch-third__party_breakpad_breakpad_src_common_simple__string__dictionary.h
diff --git a/devel/electron11/files/patch-third__party_crashpad_crashpad_client_BUILD.gn b/devel/electron12/files/patch-third__party_crashpad_crashpad_client_BUILD.gn
similarity index 71%
rename from devel/electron11/files/patch-third__party_crashpad_crashpad_client_BUILD.gn
rename to devel/electron12/files/patch-third__party_crashpad_crashpad_client_BUILD.gn
index 4533f7ff1178e4abf6d096431c967d30d90fd872..98065bcb648287d2edcdb3cf3d273d9bf2448edb 100644
--- a/devel/electron11/files/patch-third__party_crashpad_crashpad_client_BUILD.gn
+++ b/devel/electron12/files/patch-third__party_crashpad_crashpad_client_BUILD.gn
@@ -1,6 +1,6 @@
---- third_party/crashpad/crashpad/client/BUILD.gn.orig	2021-01-07 00:37:22 UTC
+--- third_party/crashpad/crashpad/client/BUILD.gn.orig	2021-04-14 01:09:36 UTC
 +++ third_party/crashpad/crashpad/client/BUILD.gn
-@@ -82,6 +82,12 @@ crashpad_static_library("client") {
+@@ -77,6 +77,12 @@ crashpad_static_library("client") {
      sources += [ "crashpad_client_fuchsia.cc" ]
    }
  
diff --git a/devel/electron11/files/patch-third__party_crashpad_crashpad_client_crashpad__client__posix.cc b/devel/electron12/files/patch-third__party_crashpad_crashpad_client_crashpad__client__posix.cc
similarity index 100%
rename from devel/electron11/files/patch-third__party_crashpad_crashpad_client_crashpad__client__posix.cc
rename to devel/electron12/files/patch-third__party_crashpad_crashpad_client_crashpad__client__posix.cc
diff --git a/devel/electron11/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc b/devel/electron12/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc
similarity index 100%
rename from devel/electron11/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc
rename to devel/electron12/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc
diff --git a/devel/electron11/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc b/devel/electron12/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc
similarity index 100%
rename from devel/electron11/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc
rename to devel/electron12/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc
diff --git a/devel/electron11/files/patch-third__party_crc32c_src_src_crc32c__arm64__linux__check.h b/devel/electron12/files/patch-third__party_crc32c_src_src_crc32c__arm64__linux__check.h
similarity index 100%
rename from devel/electron11/files/patch-third__party_crc32c_src_src_crc32c__arm64__linux__check.h
rename to devel/electron12/files/patch-third__party_crc32c_src_src_crc32c__arm64__linux__check.h
diff --git a/devel/electron11/files/patch-third__party_electron__node_deps_uv_BUILD.gn b/devel/electron12/files/patch-third__party_electron__node_deps_uv_BUILD.gn
similarity index 85%
rename from devel/electron11/files/patch-third__party_electron__node_deps_uv_BUILD.gn
rename to devel/electron12/files/patch-third__party_electron__node_deps_uv_BUILD.gn
index f5c64b8b500a64c325829d4d4cb554c7955ecc83..6f979e91fcbd2a18cbaca30d186c545d4b9c429b 100644
--- a/devel/electron11/files/patch-third__party_electron__node_deps_uv_BUILD.gn
+++ b/devel/electron12/files/patch-third__party_electron__node_deps_uv_BUILD.gn
@@ -1,4 +1,4 @@
---- third_party/electron_node/deps/uv/BUILD.gn.orig	2021-01-25 11:27:01 UTC
+--- third_party/electron_node/deps/uv/BUILD.gn.orig	2021-04-22 07:51:51 UTC
 +++ third_party/electron_node/deps/uv/BUILD.gn
 @@ -3,7 +3,7 @@ config("libuv_config") {
  
@@ -9,7 +9,7 @@
      defines += [ "_POSIX_C_SOURCE=200112" ]
    }
    if (!is_win) {
-@@ -150,7 +150,7 @@ static_library("uv") {
+@@ -151,7 +151,7 @@ static_library("uv") {
      libs += [ "m" ]
      ldflags += [ "-pthread" ]
    }
@@ -18,7 +18,7 @@
      sources += [ "src/unix/proctitle.c" ]
    }
    if (is_mac) {
-@@ -165,7 +165,7 @@ static_library("uv") {
+@@ -166,7 +166,7 @@ static_library("uv") {
        "_DARWIN_UNLIMITED_SELECT=1",
      ]
    }
diff --git a/devel/electron11/files/patch-third__party_ffmpeg_libavutil_mem.c b/devel/electron12/files/patch-third__party_ffmpeg_libavutil_mem.c
similarity index 100%
rename from devel/electron11/files/patch-third__party_ffmpeg_libavutil_mem.c
rename to devel/electron12/files/patch-third__party_ffmpeg_libavutil_mem.c
diff --git a/devel/electron11/files/patch-third__party_googletest_src_googletest_include_gtest_internal_gtest-port.h b/devel/electron12/files/patch-third__party_googletest_src_googletest_include_gtest_internal_gtest-port.h
similarity index 100%
rename from devel/electron11/files/patch-third__party_googletest_src_googletest_include_gtest_internal_gtest-port.h
rename to devel/electron12/files/patch-third__party_googletest_src_googletest_include_gtest_internal_gtest-port.h
diff --git a/devel/electron11/files/patch-third__party_googletest_src_googletest_src_gtest-port.cc b/devel/electron12/files/patch-third__party_googletest_src_googletest_src_gtest-port.cc
similarity index 100%
rename from devel/electron11/files/patch-third__party_googletest_src_googletest_src_gtest-port.cc
rename to devel/electron12/files/patch-third__party_googletest_src_googletest_src_gtest-port.cc
diff --git a/devel/electron11/files/patch-third__party_googletest_src_googletest_src_gtest.cc b/devel/electron12/files/patch-third__party_googletest_src_googletest_src_gtest.cc
similarity index 100%
rename from devel/electron11/files/patch-third__party_googletest_src_googletest_src_gtest.cc
rename to devel/electron12/files/patch-third__party_googletest_src_googletest_src_gtest.cc
diff --git a/devel/electron12/files/patch-third__party_harfbuzz-ng_harfbuzz.gni b/devel/electron12/files/patch-third__party_harfbuzz-ng_harfbuzz.gni
new file mode 100644
index 0000000000000000000000000000000000000000..73e90986d5e9844130d0719584972351a53a6811
--- /dev/null
+++ b/devel/electron12/files/patch-third__party_harfbuzz-ng_harfbuzz.gni
@@ -0,0 +1,20 @@
+--- third_party/harfbuzz-ng/harfbuzz.gni.orig	2021-04-14 01:09:37 UTC
++++ third_party/harfbuzz-ng/harfbuzz.gni
+@@ -3,10 +3,11 @@
+ # found in the LICENSE file.
+ 
+ declare_args() {
+-  # Blink uses a cutting-edge version of Harfbuzz; most Linux distros do not
+-  # contain a new enough version of the code to work correctly. However,
+-  # ChromeOS chroots (i.e, real ChromeOS builds for devices) do contain a
+-  # new enough version of the library, and so this variable exists so that
+-  # ChromeOS can build against the system lib and keep binary sizes smaller.
+-  use_system_harfbuzz = false
++  # Blink uses a cutting-edge version of Harfbuzz (version listed in
++  # third_party/harfbuzz-ng/README.chromium); most Linux distros do not contain
++  # a new enough version of the code to work correctly. However, ChromeOS
++  # chroots (i.e. real ChromeOS builds for devices) do contain a new enough
++  # version of the library, and so this variable exists so that ChromeOS can
++  # build against the system lib and keep binary sizes smaller.
++  use_system_harfbuzz = true
+ }
diff --git a/devel/electron11/files/patch-third__party_leveldatabase_env__chromium.cc b/devel/electron12/files/patch-third__party_leveldatabase_env__chromium.cc
similarity index 100%
rename from devel/electron11/files/patch-third__party_leveldatabase_env__chromium.cc
rename to devel/electron12/files/patch-third__party_leveldatabase_env__chromium.cc
diff --git a/devel/electron11/files/patch-third__party_libXNVCtrl_NVCtrl.c b/devel/electron12/files/patch-third__party_libXNVCtrl_NVCtrl.c
similarity index 100%
rename from devel/electron11/files/patch-third__party_libXNVCtrl_NVCtrl.c
rename to devel/electron12/files/patch-third__party_libXNVCtrl_NVCtrl.c
diff --git a/devel/electron11/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h b/devel/electron12/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h
similarity index 100%
rename from devel/electron11/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h
rename to devel/electron12/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h
diff --git a/devel/electron11/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h b/devel/electron12/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h
similarity index 100%
rename from devel/electron11/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h
rename to devel/electron12/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h
diff --git a/devel/electron11/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h b/devel/electron12/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h
similarity index 100%
rename from devel/electron11/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h
rename to devel/electron12/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h
diff --git a/devel/electron11/files/patch-third__party_libpng_pnglibconf.h b/devel/electron12/files/patch-third__party_libpng_pnglibconf.h
similarity index 100%
rename from devel/electron11/files/patch-third__party_libpng_pnglibconf.h
rename to devel/electron12/files/patch-third__party_libpng_pnglibconf.h
diff --git a/devel/electron12/files/patch-third__party_libva__protected__content_va__protected__content.h b/devel/electron12/files/patch-third__party_libva__protected__content_va__protected__content.h
new file mode 100644
index 0000000000000000000000000000000000000000..1023cdc82272cb1d008ecd43fd13da76a4699843
--- /dev/null
+++ b/devel/electron12/files/patch-third__party_libva__protected__content_va__protected__content.h
@@ -0,0 +1,34 @@
+--- third_party/libva_protected_content/va_protected_content.h.orig	2021-04-14 01:09:37 UTC
++++ third_party/libva_protected_content/va_protected_content.h
+@@ -133,6 +133,7 @@ extern "C" {
+ #define VA_PC_SAMPLE_TYPE_SUBSAMPLE 0x00000002
+ 
+ /** \brief TeeExec Function Codes. */
++#if 0
+ typedef enum _VA_TEE_EXEC_FUNCTION_ID {
+   VA_TEE_EXEC_TEE_FUNCID_PASS_THROUGH_NONE = 0x0,
+ 
+@@ -144,6 +145,7 @@ typedef enum _VA_TEE_EXEC_FUNCTION_ID {
+   VA_TEE_EXEC_TEE_FUNCID_PASS_THROUGH = 0x40001000,
+ 
+ } VA_TEE_EXEC_FUNCTION_ID;
++#endif
+ 
+ /** \brief values for the encryption return status. */
+ typedef enum {
+@@ -160,6 +162,7 @@ typedef enum {
+ } VAEncryptionStatus;
+ 
+ /** \brief structure for encrypted segment info. */
++#if 0
+ typedef struct _VAEncryptionSegmentInfo {
+   /** \brief  The offset relative to the start of the bitstream input in
+    *  bytes of the start of the segment*/
+@@ -215,6 +218,7 @@ typedef struct _VAEncryptionParameters {
+   /** \brief Reserved bytes for future use, must be zero */
+   uint32_t va_reserved[VA_PADDING_MEDIUM];
+ } VAEncryptionParameters;
++#endif
+ 
+ /** \brief structure for VA_TEE_EXEC_GPU_FUNCID_ENCRYPTION_BLT */
+ typedef struct _VA_PROTECTED_BLT_PARAMS {
diff --git a/devel/electron11/files/patch-third__party_libyuv_include_libyuv_row.h b/devel/electron12/files/patch-third__party_libyuv_include_libyuv_row.h
similarity index 86%
rename from devel/electron11/files/patch-third__party_libyuv_include_libyuv_row.h
rename to devel/electron12/files/patch-third__party_libyuv_include_libyuv_row.h
index 593bc3a76ea56c0ff605d930bfbc589197e3dd41..add71116261f48f08a11835c13e5263c66900971 100644
--- a/devel/electron11/files/patch-third__party_libyuv_include_libyuv_row.h
+++ b/devel/electron12/files/patch-third__party_libyuv_include_libyuv_row.h
@@ -1,6 +1,6 @@
---- third_party/libyuv/include/libyuv/row.h.orig	2021-01-07 00:39:32 UTC
+--- third_party/libyuv/include/libyuv/row.h.orig	2021-04-14 01:15:25 UTC
 +++ third_party/libyuv/include/libyuv/row.h
-@@ -157,10 +157,14 @@ extern "C" {
+@@ -158,10 +158,14 @@ extern "C" {
  #define HAS_ARGBSHADEROW_SSE2
  #define HAS_ARGBSUBTRACTROW_SSE2
  #define HAS_ARGBUNATTENUATEROW_SSE2
@@ -15,7 +15,7 @@
  #define HAS_RGBCOLORTABLEROW_X86
  #define HAS_SOBELROW_SSE2
  #define HAS_SOBELTOPLANEROW_SSE2
-@@ -206,7 +210,9 @@ extern "C" {
+@@ -208,7 +212,9 @@ extern "C" {
  #define HAS_I422TORGB565ROW_AVX2
  #define HAS_I422TORGBAROW_AVX2
  #define HAS_I444TOARGBROW_AVX2
@@ -25,7 +25,7 @@
  #define HAS_J422TOARGBROW_AVX2
  #define HAS_MERGEUVROW_AVX2
  #define HAS_MIRRORROW_AVX2
-@@ -231,7 +237,9 @@ extern "C" {
+@@ -233,7 +239,9 @@ extern "C" {
  #define HAS_ARGBMULTIPLYROW_AVX2
  #define HAS_ARGBSUBTRACTROW_AVX2
  #define HAS_ARGBUNATTENUATEROW_AVX2
diff --git a/devel/electron11/files/patch-third__party_nasm_config_config-linux.h b/devel/electron12/files/patch-third__party_nasm_config_config-linux.h
similarity index 100%
rename from devel/electron11/files/patch-third__party_nasm_config_config-linux.h
rename to devel/electron12/files/patch-third__party_nasm_config_config-linux.h
diff --git a/devel/electron11/files/patch-third__party_node_node.py b/devel/electron12/files/patch-third__party_node_node.py
similarity index 100%
rename from devel/electron11/files/patch-third__party_node_node.py
rename to devel/electron12/files/patch-third__party_node_node.py
diff --git a/devel/electron11/files/patch-third__party_openscreen_src_platform_impl_udp__socket__posix.cc b/devel/electron12/files/patch-third__party_openscreen_src_platform_impl_udp__socket__posix.cc
similarity index 100%
rename from devel/electron11/files/patch-third__party_openscreen_src_platform_impl_udp__socket__posix.cc
rename to devel/electron12/files/patch-third__party_openscreen_src_platform_impl_udp__socket__posix.cc
diff --git a/devel/electron11/files/patch-third__party_pdfium_core_fxcrt_cfx__datetime.cpp b/devel/electron12/files/patch-third__party_pdfium_core_fxcrt_cfx__datetime.cpp
similarity index 100%
rename from devel/electron11/files/patch-third__party_pdfium_core_fxcrt_cfx__datetime.cpp
rename to devel/electron12/files/patch-third__party_pdfium_core_fxcrt_cfx__datetime.cpp
diff --git a/devel/electron11/files/patch-third__party_pdfium_core_fxge_cfx__fontmapper.cpp b/devel/electron12/files/patch-third__party_pdfium_core_fxge_cfx__fontmapper.cpp
similarity index 100%
rename from devel/electron11/files/patch-third__party_pdfium_core_fxge_cfx__fontmapper.cpp
rename to devel/electron12/files/patch-third__party_pdfium_core_fxge_cfx__fontmapper.cpp
diff --git a/devel/electron11/files/patch-third__party_pdfium_core_fxge_fx__ge__linux.cpp b/devel/electron12/files/patch-third__party_pdfium_core_fxge_fx__ge__linux.cpp
similarity index 100%
rename from devel/electron11/files/patch-third__party_pdfium_core_fxge_fx__ge__linux.cpp
rename to devel/electron12/files/patch-third__party_pdfium_core_fxge_fx__ge__linux.cpp
diff --git a/devel/electron11/files/patch-third__party_pdfium_fxjs_cjs__publicmethods.cpp b/devel/electron12/files/patch-third__party_pdfium_fxjs_cjs__publicmethods.cpp
similarity index 100%
rename from devel/electron11/files/patch-third__party_pdfium_fxjs_cjs__publicmethods.cpp
rename to devel/electron12/files/patch-third__party_pdfium_fxjs_cjs__publicmethods.cpp
diff --git a/devel/electron11/files/patch-third__party_pdfium_fxjs_fx__date__helpers.cpp b/devel/electron12/files/patch-third__party_pdfium_fxjs_fx__date__helpers.cpp
similarity index 100%
rename from devel/electron11/files/patch-third__party_pdfium_fxjs_fx__date__helpers.cpp
rename to devel/electron12/files/patch-third__party_pdfium_fxjs_fx__date__helpers.cpp
diff --git a/devel/electron11/files/patch-third__party_pdfium_third__party_base_allocator_partition__allocator_page__allocator__internals__posix.h b/devel/electron12/files/patch-third__party_pdfium_third__party_base_allocator_partition__allocator_page__allocator__internals__posix.h
similarity index 100%
rename from devel/electron11/files/patch-third__party_pdfium_third__party_base_allocator_partition__allocator_page__allocator__internals__posix.h
rename to devel/electron12/files/patch-third__party_pdfium_third__party_base_allocator_partition__allocator_page__allocator__internals__posix.h
diff --git a/devel/electron12/files/patch-third__party_perfetto_gn_BUILD.gn b/devel/electron12/files/patch-third__party_perfetto_gn_BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..456cdafcf489615c56e0d2460c3f77f7d1bed27b
--- /dev/null
+++ b/devel/electron12/files/patch-third__party_perfetto_gn_BUILD.gn
@@ -0,0 +1,19 @@
+--- third_party/perfetto/gn/BUILD.gn.orig	2021-04-14 01:15:26 UTC
++++ third_party/perfetto/gn/BUILD.gn
+@@ -48,13 +48,15 @@ action("gen_buildflags") {
+   # we run the tools/gen_xxx generators.
+   if (enable_perfetto_watchdog) {
+     perfetto_watchdog = "PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() || " +
+-                        "PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX()"
++                        "PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() || " +
++                        "PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD()"
+   } else {
+     perfetto_watchdog = "0"
+   }
+   if (enable_perfetto_tools) {
+     perfetto_local_symbolizer =
+         "PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() || " +
++        "PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() || " +
+         "PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MAC() ||" +
+         "PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN()"
+   } else {
diff --git a/devel/electron11/files/patch-third__party_perfetto_include_perfetto_base_build__config.h b/devel/electron12/files/patch-third__party_perfetto_include_perfetto_base_build__config.h
similarity index 97%
rename from devel/electron11/files/patch-third__party_perfetto_include_perfetto_base_build__config.h
rename to devel/electron12/files/patch-third__party_perfetto_include_perfetto_base_build__config.h
index 2ccd9c339f358bb3f56f078764216a2fb8c31ac4..b5265ecba2a127e0c5a36a22b55f9f965e356821 100644
--- a/devel/electron11/files/patch-third__party_perfetto_include_perfetto_base_build__config.h
+++ b/devel/electron12/files/patch-third__party_perfetto_include_perfetto_base_build__config.h
@@ -1,4 +1,4 @@
---- third_party/perfetto/include/perfetto/base/build_config.h.orig	2021-01-07 00:39:33 UTC
+--- third_party/perfetto/include/perfetto/base/build_config.h.orig	2021-04-14 01:15:26 UTC
 +++ third_party/perfetto/include/perfetto/base/build_config.h
 @@ -27,6 +27,7 @@
  #if defined(__ANDROID__)
@@ -30,7 +30,7 @@
  #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_NACL() 0
 +#elif defined(__FreeBSD__)
 +#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0
-+#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 1
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0
 +#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 1
 +#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0
 +#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_APPLE() 0
diff --git a/devel/electron11/files/patch-third__party_perfetto_include_perfetto_base_thread__utils.h b/devel/electron12/files/patch-third__party_perfetto_include_perfetto_base_thread__utils.h
similarity index 100%
rename from devel/electron11/files/patch-third__party_perfetto_include_perfetto_base_thread__utils.h
rename to devel/electron12/files/patch-third__party_perfetto_include_perfetto_base_thread__utils.h
diff --git a/devel/electron11/files/patch-third__party_perfetto_include_perfetto_base_time.h b/devel/electron12/files/patch-third__party_perfetto_include_perfetto_base_time.h
similarity index 83%
rename from devel/electron11/files/patch-third__party_perfetto_include_perfetto_base_time.h
rename to devel/electron12/files/patch-third__party_perfetto_include_perfetto_base_time.h
index 23a7b389c7495dc3e629be41db7f8b50afe58b43..28f6d48798d0850cb35b9d4fec6cf4a46fc61353 100644
--- a/devel/electron11/files/patch-third__party_perfetto_include_perfetto_base_time.h
+++ b/devel/electron12/files/patch-third__party_perfetto_include_perfetto_base_time.h
@@ -1,6 +1,6 @@
---- third_party/perfetto/include/perfetto/base/time.h.orig	2021-01-07 00:39:33 UTC
+--- third_party/perfetto/include/perfetto/base/time.h.orig	2021-04-14 01:15:26 UTC
 +++ third_party/perfetto/include/perfetto/base/time.h
-@@ -141,6 +141,9 @@ inline TimeNanos GetTimeInternalNs(clockid_t clk_id) {
+@@ -142,6 +142,9 @@ inline TimeNanos GetTimeInternalNs(clockid_t clk_id) {
  // Return ns from boot. Conversely to GetWallTimeNs, this clock counts also time
  // during suspend (when supported).
  inline TimeNanos GetBootTimeNs() {
@@ -10,7 +10,7 @@
    // Determine if CLOCK_BOOTTIME is available on the first call.
    static const clockid_t kBootTimeClockSource = [] {
      struct timespec ts = {};
-@@ -148,6 +151,7 @@ inline TimeNanos GetBootTimeNs() {
+@@ -149,6 +152,7 @@ inline TimeNanos GetBootTimeNs() {
      return res == 0 ? CLOCK_BOOTTIME : kWallTimeClockSource;
    }();
    return GetTimeInternalNs(kBootTimeClockSource);
diff --git a/devel/electron12/files/patch-third__party_perfetto_include_perfetto_ext_base_thread__utils.h b/devel/electron12/files/patch-third__party_perfetto_include_perfetto_ext_base_thread__utils.h
new file mode 100644
index 0000000000000000000000000000000000000000..b6695a01a35ffbc935931ead4b161078c58eaa5f
--- /dev/null
+++ b/devel/electron12/files/patch-third__party_perfetto_include_perfetto_ext_base_thread__utils.h
@@ -0,0 +1,32 @@
+--- third_party/perfetto/include/perfetto/ext/base/thread_utils.h.orig	2021-04-14 01:15:26 UTC
++++ third_party/perfetto/include/perfetto/ext/base/thread_utils.h
+@@ -23,7 +23,8 @@
+ 
+ #if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) ||   \
+     PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) || \
+-    PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE)
++    PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE) ||   \
++    PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+ #include <pthread.h>
+ #include <string.h>
+ #include <algorithm>
+@@ -37,7 +38,8 @@ namespace base {
+ 
+ #if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) ||   \
+     PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) || \
+-    PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE)
++    PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE) ||   \
++    PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+ // Sets the "comm" of the calling thread to the first 15 chars of the given
+ // string.
+ inline bool MaybeSetThreadName(const std::string& name) {
+@@ -47,6 +49,9 @@ inline bool MaybeSetThreadName(const std::string& name
+ 
+ #if PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE)
+   return pthread_setname_np(buf) == 0;
++#elif PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
++  pthread_set_name_np(pthread_self(), buf);
++  return true;
+ #else
+   return pthread_setname_np(pthread_self(), buf) == 0;
+ #endif
diff --git a/devel/electron12/files/patch-third__party_perfetto_src_base_ctrl__c__handler.cc b/devel/electron12/files/patch-third__party_perfetto_src_base_ctrl__c__handler.cc
new file mode 100644
index 0000000000000000000000000000000000000000..fbf9a86742453062162691d3c3738131bfec3537
--- /dev/null
+++ b/devel/electron12/files/patch-third__party_perfetto_src_base_ctrl__c__handler.cc
@@ -0,0 +1,12 @@
+--- third_party/perfetto/src/base/ctrl_c_handler.cc.orig	2021-04-14 01:15:26 UTC
++++ third_party/perfetto/src/base/ctrl_c_handler.cc
+@@ -51,7 +51,8 @@ void InstallCtrCHandler(CtrlCHandlerFunction handler) 
+   ::SetConsoleCtrlHandler(trampoline, true);
+ #elif PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
+     PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) || \
+-    PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE)
++    PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE)   || \
++    PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+   // Setup signal handler.
+   struct sigaction sa {};
+ 
diff --git a/devel/electron12/files/patch-third__party_perfetto_src_base_file__utils.cc b/devel/electron12/files/patch-third__party_perfetto_src_base_file__utils.cc
new file mode 100644
index 0000000000000000000000000000000000000000..fbb1a6d29063cb0b676a5367365a55cf28c3a789
--- /dev/null
+++ b/devel/electron12/files/patch-third__party_perfetto_src_base_file__utils.cc
@@ -0,0 +1,14 @@
+--- third_party/perfetto/src/base/file_utils.cc.orig	2021-04-14 01:15:26 UTC
++++ third_party/perfetto/src/base/file_utils.cc
+@@ -148,8 +148,9 @@ ssize_t WriteAllHandle(PlatformHandle h, const void* b
+ 
+ bool FlushFile(int fd) {
+   PERFETTO_DCHECK(fd != 0);
+-#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
+-    PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
++#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) ||   \
++    PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) || \
++    PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+   return !PERFETTO_EINTR(fdatasync(fd));
+ #elif PERFETTO_BUILDFLAG(PERFETTO_OS_WIN)
+   return !PERFETTO_EINTR(_commit(fd));
diff --git a/devel/electron12/files/patch-third__party_perfetto_src_base_subprocess__posix.cc b/devel/electron12/files/patch-third__party_perfetto_src_base_subprocess__posix.cc
new file mode 100644
index 0000000000000000000000000000000000000000..3d1a5dee95f193295e7bc040021e652682cae29d
--- /dev/null
+++ b/devel/electron12/files/patch-third__party_perfetto_src_base_subprocess__posix.cc
@@ -0,0 +1,37 @@
+--- third_party/perfetto/src/base/subprocess_posix.cc.orig	2021-04-14 01:15:26 UTC
++++ third_party/perfetto/src/base/subprocess_posix.cc
+@@ -20,7 +20,8 @@
+ 
+ #if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) ||   \
+     PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) || \
+-    PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE)
++    PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE) ||   \
++    PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+ 
+ #include <fcntl.h>
+ #include <poll.h>
+@@ -38,6 +39,8 @@
+ #if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
+     PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
+ #include <sys/prctl.h>
++#elif PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
++#include <sys/procctl.h>
+ #endif
+ 
+ #include "perfetto/base/logging.h"
+@@ -70,6 +73,9 @@ void __attribute__((noreturn)) ChildProcess(ChildProce
+   // relevant for tests, so that a test failure/crash doesn't leave child
+   // processes around that get reparented to init.
+   prctl(PR_SET_PDEATHSIG, SIGKILL);
++#elif PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
++  int procctl_value = SIGKILL;
++  procctl(P_PID, 0, PROC_PDEATHSIG_CTL, &procctl_value);
+ #endif
+ 
+   auto die = [args](const char* err) __attribute__((noreturn)) {
+@@ -431,4 +437,4 @@ void Subprocess::KillAndWaitForTermination(int sig_num
+ }  // namespace base
+ }  // namespace perfetto
+ 
+-#endif  // PERFETTO_OS_LINUX || PERFETTO_OS_ANDROID || PERFETTO_OS_APPLE
++#endif  // PERFETTO_OS_LINUX || PERFETTO_OS_ANDROID || PERFETTO_OS_APPLE || PERFETTO_OS_FREEBSD
diff --git a/devel/electron12/files/patch-third__party_perfetto_src_base_unix__socket.cc b/devel/electron12/files/patch-third__party_perfetto_src_base_unix__socket.cc
new file mode 100644
index 0000000000000000000000000000000000000000..533d908ea97f75c8505bb3b4ce5c1b6b2e322634
--- /dev/null
+++ b/devel/electron12/files/patch-third__party_perfetto_src_base_unix__socket.cc
@@ -0,0 +1,21 @@
+--- third_party/perfetto/src/base/unix_socket.cc.orig	2021-04-14 01:15:26 UTC
++++ third_party/perfetto/src/base/unix_socket.cc
+@@ -41,7 +41,7 @@
+ #include <unistd.h>
+ #endif
+ 
+-#if PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE)
++#if PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE) || PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+ #include <sys/ucred.h>
+ #endif
+ 
+@@ -758,7 +758,8 @@ void UnixSocket::ReadPeerCredentialsPosix() {
+   PERFETTO_CHECK(res == 0);
+   peer_uid_ = user_cred.uid;
+   peer_pid_ = user_cred.pid;
+-#elif PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE)
++#elif PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE) || \
++      PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+   struct xucred user_cred;
+   socklen_t len = sizeof(user_cred);
+   int res = getsockopt(sock_raw_.fd(), 0, LOCAL_PEERCRED, &user_cred, &len);
diff --git a/devel/electron12/files/patch-third__party_perfetto_src_base_utils.cc b/devel/electron12/files/patch-third__party_perfetto_src_base_utils.cc
new file mode 100644
index 0000000000000000000000000000000000000000..0fc0b1c80a1d7b70c7cebe8b938080a6c89919b7
--- /dev/null
+++ b/devel/electron12/files/patch-third__party_perfetto_src_base_utils.cc
@@ -0,0 +1,34 @@
+--- third_party/perfetto/src/base/utils.cc.orig	2021-04-14 01:15:26 UTC
++++ third_party/perfetto/src/base/utils.cc
+@@ -21,7 +21,8 @@
+ 
+ #if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) ||   \
+     PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) || \
+-    PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE)
++    PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE) ||   \
++    PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+ #include <unistd.h>  // For getpagesize() and geteuid().
+ #endif
+ 
+@@ -67,8 +68,9 @@ void MaybeReleaseAllocatorMemToOS() {
+ 
+ uint32_t GetSysPageSize() {
+   ignore_result(kPageSize);  // Just to keep the amalgamated build happy.
+-#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
+-    PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
++#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) ||   \
++    PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) || \
++    PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+   static std::atomic<uint32_t> page_size{0};
+   // This function might be called in hot paths. Avoid calling getpagesize() all
+   // the times, in many implementations getpagesize() calls sysconf() which is
+@@ -89,7 +91,8 @@ uint32_t GetSysPageSize() {
+ uid_t GetCurrentUserId() {
+ #if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) ||   \
+     PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) || \
+-    PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE)
++    PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE) ||   \
++    PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+   return geteuid();
+ #else
+   // TODO(primiano): On Windows we could hash the current user SID and derive a
diff --git a/devel/electron12/files/patch-third__party_perfetto_src_base_watchdog__posix.cc b/devel/electron12/files/patch-third__party_perfetto_src_base_watchdog__posix.cc
new file mode 100644
index 0000000000000000000000000000000000000000..3853a56c6ff3188b54070b9d053e180810bd6c74
--- /dev/null
+++ b/devel/electron12/files/patch-third__party_perfetto_src_base_watchdog__posix.cc
@@ -0,0 +1,14 @@
+--- third_party/perfetto/src/base/watchdog_posix.cc.orig	2021-04-14 01:15:26 UTC
++++ third_party/perfetto/src/base/watchdog_posix.cc
+@@ -114,8 +114,9 @@ void Watchdog::Start() {
+   } else {
+     PERFETTO_DCHECK(!enabled_);
+ 
+-#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
+-    PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
++#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) ||   \
++    PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) || \
++    PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+     // Kick the thread to start running but only on Android or Linux.
+     enabled_ = true;
+     thread_ = std::thread(&Watchdog::ThreadMain, this);
diff --git a/devel/electron12/files/patch-third__party_perfetto_src_trace__processor_read__trace.cc b/devel/electron12/files/patch-third__party_perfetto_src_trace__processor_read__trace.cc
new file mode 100644
index 0000000000000000000000000000000000000000..974c6ba2891128aa2c483ccf357a2cf763c02572
--- /dev/null
+++ b/devel/electron12/files/patch-third__party_perfetto_src_trace__processor_read__trace.cc
@@ -0,0 +1,12 @@
+--- third_party/perfetto/src/trace_processor/read_trace.cc.orig	2021-04-14 01:15:26 UTC
++++ third_party/perfetto/src/trace_processor/read_trace.cc
+@@ -33,7 +33,8 @@
+ #include "protos/perfetto/trace/trace_packet.pbzero.h"
+ 
+ #if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
+-    PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE)
++    PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE) || \
++    PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+ #define PERFETTO_HAS_AIO_H() 1
+ #else
+ #define PERFETTO_HAS_AIO_H() 0
diff --git a/devel/electron12/files/patch-third__party_perfetto_src_trace__processor_trace__processor__shell.cc b/devel/electron12/files/patch-third__party_perfetto_src_trace__processor_trace__processor__shell.cc
new file mode 100644
index 0000000000000000000000000000000000000000..d83983243b041ad1a37b6c64d526f902ac9abfbb
--- /dev/null
+++ b/devel/electron12/files/patch-third__party_perfetto_src_trace__processor_trace__processor__shell.cc
@@ -0,0 +1,22 @@
+--- third_party/perfetto/src/trace_processor/trace_processor_shell.cc.orig	2021-04-14 01:15:26 UTC
++++ third_party/perfetto/src/trace_processor/trace_processor_shell.cc
+@@ -55,7 +55,8 @@
+ 
+ #if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) ||   \
+     PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) || \
+-    PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE)
++    PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE) ||   \
++    PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+ #define PERFETTO_HAS_SIGNAL_H() 1
+ #else
+ #define PERFETTO_HAS_SIGNAL_H() 0
+@@ -103,7 +104,8 @@ std::string GetConfigPath() {
+   const char* homedir = getenv("HOME");
+ #if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) ||   \
+     PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) || \
+-    PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE)
++    PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE) ||   \
++    PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+   if (homedir == nullptr)
+     homedir = getpwuid(getuid())->pw_dir;
+ #elif PERFETTO_BUILDFLAG(PERFETTO_OS_WIN)
diff --git a/devel/electron12/files/patch-third__party_perfetto_src_traced_service_service.cc b/devel/electron12/files/patch-third__party_perfetto_src_traced_service_service.cc
new file mode 100644
index 0000000000000000000000000000000000000000..1425a881d4ab0788759d7745355aa4974d6dc549
--- /dev/null
+++ b/devel/electron12/files/patch-third__party_perfetto_src_traced_service_service.cc
@@ -0,0 +1,12 @@
+--- third_party/perfetto/src/traced/service/service.cc.orig	2021-04-14 01:15:27 UTC
++++ third_party/perfetto/src/traced/service/service.cc
+@@ -28,7 +28,8 @@
+ #include "src/traced/service/builtin_producer.h"
+ 
+ #if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
+-    PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
++    PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) || \
++    PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+ #define PERFETTO_SET_SOCKET_PERMISSIONS
+ #include <fcntl.h>
+ #include <grp.h>
diff --git a/devel/electron11/files/patch-third__party_perfetto_src_tracing_core_tracing__service__impl.cc b/devel/electron12/files/patch-third__party_perfetto_src_tracing_core_tracing__service__impl.cc
similarity index 55%
rename from devel/electron11/files/patch-third__party_perfetto_src_tracing_core_tracing__service__impl.cc
rename to devel/electron12/files/patch-third__party_perfetto_src_tracing_core_tracing__service__impl.cc
index 2996f8fccce4699cbf3d9958127c8f9549cd6218..4880bbef3ecc59b7565b770348f382b9802084c6 100644
--- a/devel/electron11/files/patch-third__party_perfetto_src_tracing_core_tracing__service__impl.cc
+++ b/devel/electron12/files/patch-third__party_perfetto_src_tracing_core_tracing__service__impl.cc
@@ -1,6 +1,16 @@
---- third_party/perfetto/src/tracing/core/tracing_service_impl.cc.orig	2021-01-07 00:39:34 UTC
+--- third_party/perfetto/src/tracing/core/tracing_service_impl.cc.orig	2021-04-14 01:15:27 UTC
 +++ third_party/perfetto/src/tracing/core/tracing_service_impl.cc
-@@ -2569,8 +2569,9 @@ bool TracingServiceImpl::SnapshotClocks(
+@@ -38,7 +38,8 @@
+ 
+ #if PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) || \
+     PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) ||   \
+-    PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE)
++    PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE) ||   \
++    PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+ #define PERFETTO_HAS_CHMOD
+ #include <sys/stat.h>
+ #endif
+@@ -2659,8 +2660,9 @@ bool TracingServiceImpl::SnapshotClocks(
  
    TracingSession::ClockSnapshotData new_snapshot_data;
  
diff --git a/devel/electron12/files/patch-third__party_perfetto_src_tracing_ipc_default__socket.cc b/devel/electron12/files/patch-third__party_perfetto_src_tracing_ipc_default__socket.cc
new file mode 100644
index 0000000000000000000000000000000000000000..9e14c893786b4ff1166ea9aef0876c596daaff86
--- /dev/null
+++ b/devel/electron12/files/patch-third__party_perfetto_src_tracing_ipc_default__socket.cc
@@ -0,0 +1,12 @@
+--- third_party/perfetto/src/tracing/ipc/default_socket.cc.orig	2021-04-14 01:15:27 UTC
++++ third_party/perfetto/src/tracing/ipc/default_socket.cc
+@@ -35,7 +35,8 @@ const char* kRunPerfettoBaseDir = "/run/perfetto/";
+ bool UseRunPerfettoBaseDir() {
+ #if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) ||   \
+     PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) || \
+-    PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE)
++    PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE) ||   \
++    PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+   // Note that the trailing / in |kRunPerfettoBaseDir| ensures we are checking
+   // against a directory, not a file.
+   int res = PERFETTO_EINTR(access(kRunPerfettoBaseDir, X_OK));
diff --git a/devel/electron12/files/patch-third__party_perfetto_src_tracing_ipc_memfd.cc b/devel/electron12/files/patch-third__party_perfetto_src_tracing_ipc_memfd.cc
new file mode 100644
index 0000000000000000000000000000000000000000..c3d8bfa075ee471d0a9d77aa58004a94f3f3768d
--- /dev/null
+++ b/devel/electron12/files/patch-third__party_perfetto_src_tracing_ipc_memfd.cc
@@ -0,0 +1,16 @@
+--- third_party/perfetto/src/tracing/ipc/memfd.cc.orig	2021-04-14 01:15:27 UTC
++++ third_party/perfetto/src/tracing/ipc/memfd.cc
+@@ -18,9 +18,10 @@
+ 
+ #include <errno.h>
+ 
+-#define PERFETTO_MEMFD_ENABLED()             \
+-  PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) || \
+-      PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX)
++#define PERFETTO_MEMFD_ENABLED()               \
++  PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) ||   \
++      PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
++      PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+ 
+ #if PERFETTO_MEMFD_ENABLED()
+ 
diff --git a/devel/electron12/files/patch-third__party_perfetto_src_tracing_ipc_posix__shared__memory.cc b/devel/electron12/files/patch-third__party_perfetto_src_tracing_ipc_posix__shared__memory.cc
new file mode 100644
index 0000000000000000000000000000000000000000..777583dc3313c961b104a86d71c839f1e72ec531
--- /dev/null
+++ b/devel/electron12/files/patch-third__party_perfetto_src_tracing_ipc_posix__shared__memory.cc
@@ -0,0 +1,18 @@
+--- third_party/perfetto/src/tracing/ipc/posix_shared_memory.cc.orig	2021-04-14 01:15:27 UTC
++++ third_party/perfetto/src/tracing/ipc/posix_shared_memory.cc
+@@ -18,7 +18,8 @@
+ 
+ #if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) ||   \
+     PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) || \
+-    PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE)
++    PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE) ||   \
++    PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+ 
+ #include <fcntl.h>
+ #include <stdint.h>
+@@ -132,4 +133,4 @@ std::unique_ptr<SharedMemory> PosixSharedMemory::Facto
+ 
+ }  // namespace perfetto
+ 
+-#endif  // OS_LINUX || OS_ANDROID || OS_APPLE
++#endif  // OS_LINUX || OS_ANDROID || OS_APPLE || OS_FREEBSD
diff --git a/devel/electron12/files/patch-third__party_perfetto_src_tracing_ipc_posix__shared__memory.h b/devel/electron12/files/patch-third__party_perfetto_src_tracing_ipc_posix__shared__memory.h
new file mode 100644
index 0000000000000000000000000000000000000000..e4bee9f33082d79edaa62f349243a1b4e05df845
--- /dev/null
+++ b/devel/electron12/files/patch-third__party_perfetto_src_tracing_ipc_posix__shared__memory.h
@@ -0,0 +1,19 @@
+--- third_party/perfetto/src/tracing/ipc/posix_shared_memory.h.orig	2021-04-14 01:15:27 UTC
++++ third_party/perfetto/src/tracing/ipc/posix_shared_memory.h
+@@ -21,7 +21,8 @@
+ 
+ #if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) ||   \
+     PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) || \
+-    PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE)
++    PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE) ||   \
++    PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+ 
+ #include <stddef.h>
+ 
+@@ -76,5 +77,5 @@ class PosixSharedMemory : public SharedMemory {
+ 
+ }  // namespace perfetto
+ 
+-#endif  // OS_LINUX || OS_ANDROID || OS_APPLE
++#endif  // OS_LINUX || OS_ANDROID || OS_APPLE || OS_FREEBSD
+ #endif  // SRC_TRACING_IPC_POSIX_SHARED_MEMORY_H_
diff --git a/devel/electron12/files/patch-third__party_perfetto_src_tracing_platform__posix.cc b/devel/electron12/files/patch-third__party_perfetto_src_tracing_platform__posix.cc
new file mode 100644
index 0000000000000000000000000000000000000000..d73d73d75a6300aa91f9868dcf4138bd7ccb659b
--- /dev/null
+++ b/devel/electron12/files/patch-third__party_perfetto_src_tracing_platform__posix.cc
@@ -0,0 +1,28 @@
+--- third_party/perfetto/src/tracing/platform_posix.cc.orig	2021-04-14 01:15:27 UTC
++++ third_party/perfetto/src/tracing/platform_posix.cc
+@@ -18,7 +18,8 @@
+ 
+ #if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) ||   \
+     PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) || \
+-    PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE)
++    PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE) ||   \
++    PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+ 
+ #include "perfetto/ext/base/file_utils.h"
+ #include "perfetto/ext/base/thread_task_runner.h"
+@@ -82,7 +83,8 @@ std::string PlatformPosix::GetCurrentProcessName() {
+   std::string cmdline;
+   base::ReadFile("/proc/self/cmdline", &cmdline);
+   return cmdline.substr(0, cmdline.find('\0'));
+-#elif PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE)
++#elif PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE) || \
++      PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+   return std::string(getprogname());
+ #else
+   return "unknown_producer";
+@@ -98,4 +100,4 @@ Platform* Platform::GetDefaultPlatform() {
+ }
+ 
+ }  // namespace perfetto
+-#endif  // OS_LINUX || OS_ANDROID || OS_APPLE
++#endif  // OS_LINUX || OS_ANDROID || OS_APPLE || OS_FREEBSD
diff --git a/devel/electron12/files/patch-third__party_perfetto_tools_busy__threads_busy__threads.cc b/devel/electron12/files/patch-third__party_perfetto_tools_busy__threads_busy__threads.cc
new file mode 100644
index 0000000000000000000000000000000000000000..a7c55b8f758addb3fd60815e75d02e802df19cc0
--- /dev/null
+++ b/devel/electron12/files/patch-third__party_perfetto_tools_busy__threads_busy__threads.cc
@@ -0,0 +1,12 @@
+--- third_party/perfetto/tools/busy_threads/busy_threads.cc.orig	2021-04-14 01:15:27 UTC
++++ third_party/perfetto/tools/busy_threads/busy_threads.cc
+@@ -29,7 +29,8 @@
+ #define PERFETTO_HAVE_PTHREADS                \
+   (PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) ||   \
+    PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) || \
+-   PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE))
++   PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE) ||   \
++   PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD))
+ 
+ #if PERFETTO_HAVE_PTHREADS
+ #include <pthread.h>
diff --git a/devel/electron11/files/patch-third__party_protobuf_src_google_protobuf_stubs_platform__macros.h b/devel/electron12/files/patch-third__party_protobuf_src_google_protobuf_stubs_platform__macros.h
similarity index 100%
rename from devel/electron11/files/patch-third__party_protobuf_src_google_protobuf_stubs_platform__macros.h
rename to devel/electron12/files/patch-third__party_protobuf_src_google_protobuf_stubs_platform__macros.h
diff --git a/devel/electron11/files/patch-third__party_skia_src_core_SkCpu.cpp b/devel/electron12/files/patch-third__party_skia_src_core_SkCpu.cpp
similarity index 89%
rename from devel/electron11/files/patch-third__party_skia_src_core_SkCpu.cpp
rename to devel/electron12/files/patch-third__party_skia_src_core_SkCpu.cpp
index 4312cdebfdbfda626e15274ab49a142ead68a86e..313081b6ffa6a5e1318ff39b01c6975ec1ec8089 100644
--- a/devel/electron11/files/patch-third__party_skia_src_core_SkCpu.cpp
+++ b/devel/electron12/files/patch-third__party_skia_src_core_SkCpu.cpp
@@ -1,6 +1,6 @@
---- third_party/skia/src/core/SkCpu.cpp.orig	2021-01-07 00:39:35 UTC
+--- third_party/skia/src/core/SkCpu.cpp.orig	2021-04-14 01:15:28 UTC
 +++ third_party/skia/src/core/SkCpu.cpp
-@@ -72,6 +72,23 @@
+@@ -73,6 +73,23 @@
          return features;
      }
  
diff --git a/devel/electron11/files/patch-third__party_skia_src_gpu_GrAutoLocaleSetter.h b/devel/electron12/files/patch-third__party_skia_src_gpu_GrAutoLocaleSetter.h
similarity index 100%
rename from devel/electron11/files/patch-third__party_skia_src_gpu_GrAutoLocaleSetter.h
rename to devel/electron12/files/patch-third__party_skia_src_gpu_GrAutoLocaleSetter.h
diff --git a/devel/electron11/files/patch-third__party_skia_src_images_SkJpegEncoder.cpp b/devel/electron12/files/patch-third__party_skia_src_images_SkJpegEncoder.cpp
similarity index 100%
rename from devel/electron11/files/patch-third__party_skia_src_images_SkJpegEncoder.cpp
rename to devel/electron12/files/patch-third__party_skia_src_images_SkJpegEncoder.cpp
diff --git a/devel/electron11/files/patch-third__party_skia_src_ports_SkOSFile__stdio.cpp b/devel/electron12/files/patch-third__party_skia_src_ports_SkOSFile__stdio.cpp
similarity index 100%
rename from devel/electron11/files/patch-third__party_skia_src_ports_SkOSFile__stdio.cpp
rename to devel/electron12/files/patch-third__party_skia_src_ports_SkOSFile__stdio.cpp
diff --git a/devel/electron11/files/patch-third__party_skia_src_sksl_SkSLString.h b/devel/electron12/files/patch-third__party_skia_src_sksl_SkSLString.h
similarity index 51%
rename from devel/electron11/files/patch-third__party_skia_src_sksl_SkSLString.h
rename to devel/electron12/files/patch-third__party_skia_src_sksl_SkSLString.h
index 2c2d763293bc0b1b936f6811e2880ac65f53ae66..f4495915acf160185a8057901466df86fed593f2 100644
--- a/devel/electron11/files/patch-third__party_skia_src_sksl_SkSLString.h
+++ b/devel/electron12/files/patch-third__party_skia_src_sksl_SkSLString.h
@@ -1,4 +1,4 @@
---- third_party/skia/src/sksl/SkSLString.h.orig	2021-01-07 00:39:36 UTC
+--- third_party/skia/src/sksl/SkSLString.h.orig	2021-04-14 01:15:29 UTC
 +++ third_party/skia/src/sksl/SkSLString.h
 @@ -17,6 +17,8 @@
  #include "include/core/SkString.h"
@@ -8,4 +8,4 @@
 +
  namespace SkSL {
  
- // Represents a (not necessarily null-terminated) slice of a string.
+ class String;
diff --git a/devel/electron11/files/patch-third__party_sqlite_BUILD.gn b/devel/electron12/files/patch-third__party_sqlite_BUILD.gn
similarity index 100%
rename from devel/electron11/files/patch-third__party_sqlite_BUILD.gn
rename to devel/electron12/files/patch-third__party_sqlite_BUILD.gn
diff --git a/devel/electron11/files/patch-third__party_swiftshader_BUILD.gn b/devel/electron12/files/patch-third__party_swiftshader_BUILD.gn
similarity index 80%
rename from devel/electron11/files/patch-third__party_swiftshader_BUILD.gn
rename to devel/electron12/files/patch-third__party_swiftshader_BUILD.gn
index c0e4eccf9af51d23aee4ca3c2a4ee0ab9da002ee..f23f2269a52003b5caaff6df16752544444b6cad 100644
--- a/devel/electron11/files/patch-third__party_swiftshader_BUILD.gn
+++ b/devel/electron12/files/patch-third__party_swiftshader_BUILD.gn
@@ -1,6 +1,6 @@
---- third_party/swiftshader/BUILD.gn.orig	2021-01-07 00:39:34 UTC
+--- third_party/swiftshader/BUILD.gn.orig	2021-04-14 01:15:28 UTC
 +++ third_party/swiftshader/BUILD.gn
-@@ -138,9 +138,11 @@ config("swiftshader_config") {
+@@ -139,9 +139,11 @@ config("swiftshader_config") {
        ldflags = [ "-Wl,--gc-sections" ]
  
        if (current_cpu == "mipsel") {
@@ -15,7 +15,7 @@
          if (mips_arch_variant == "r1") {
            ldflags += [
              "-mips32",
-@@ -152,11 +154,8 @@ config("swiftshader_config") {
+@@ -153,11 +155,8 @@ config("swiftshader_config") {
          }
        } else if (current_cpu == "mips64el") {
          ldflags += [
diff --git a/devel/electron12/files/patch-third__party_swiftshader_include_vulkan_vulkan.hpp b/devel/electron12/files/patch-third__party_swiftshader_include_vulkan_vulkan.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..31dd3b73a0e1251581a62b8a4150d8501f94b55a
--- /dev/null
+++ b/devel/electron12/files/patch-third__party_swiftshader_include_vulkan_vulkan.hpp
@@ -0,0 +1,56 @@
+--- third_party/swiftshader/include/vulkan/vulkan.hpp.orig	2021-04-14 01:15:28 UTC
++++ third_party/swiftshader/include/vulkan/vulkan.hpp
+@@ -67,7 +67,7 @@
+ #endif
+ 
+ #if VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL == 1
+-#  if defined( __linux__ ) || defined( __APPLE__ )
++#  if defined( __unix__ ) || defined( __APPLE__ )
+ #    include <dlfcn.h>
+ #  elif defined( _WIN32 )
+ typedef struct HINSTANCE__ * HINSTANCE;
+@@ -92157,7 +92157,7 @@ namespace VULKAN_HPP_NAMESPACE
+     {
+       if ( !vulkanLibraryName.empty() )
+       {
+-#  if defined( __linux__ ) || defined( __APPLE__ )
++#  if defined( __unix__ ) || defined( __APPLE__ )
+         m_library = dlopen( vulkanLibraryName.c_str(), RTLD_NOW | RTLD_LOCAL );
+ #  elif defined( _WIN32 )
+         m_library = ::LoadLibraryA( vulkanLibraryName.c_str() );
+@@ -92167,7 +92167,7 @@ namespace VULKAN_HPP_NAMESPACE
+       }
+       else
+       {
+-#  if defined( __linux__ )
++#  if defined( __unix__ )
+         m_library = dlopen( "libvulkan.so", RTLD_NOW | RTLD_LOCAL );
+         if ( m_library == nullptr )
+         {
+@@ -92210,7 +92210,7 @@ namespace VULKAN_HPP_NAMESPACE
+     {
+       if ( m_library )
+       {
+-#  if defined( __linux__ ) || defined( __APPLE__ )
++#  if defined( __unix__ ) || defined( __APPLE__ )
+         dlclose( m_library );
+ #  elif defined( _WIN32 )
+         ::FreeLibrary( m_library );
+@@ -92223,7 +92223,7 @@ namespace VULKAN_HPP_NAMESPACE
+     template <typename T>
+     T getProcAddress( const char* function ) const VULKAN_HPP_NOEXCEPT
+     {
+-#  if defined( __linux__ ) || defined( __APPLE__ )
++#  if defined( __unix__ ) || defined( __APPLE__ )
+       return (T)dlsym( m_library, function );
+ #  elif defined( _WIN32 )
+       return (T)::GetProcAddress( m_library, function );
+@@ -92235,7 +92235,7 @@ namespace VULKAN_HPP_NAMESPACE
+     bool success() const VULKAN_HPP_NOEXCEPT { return m_library != nullptr; }
+ 
+   private:
+-#  if defined( __linux__ ) || defined( __APPLE__ )
++#  if defined( __unix__ ) || defined( __APPLE__ )
+     void * m_library;
+ #  elif defined( _WIN32 )
+     ::HINSTANCE m_library;
diff --git a/devel/electron11/files/patch-third__party_swiftshader_src_Common_Configurator.cpp b/devel/electron12/files/patch-third__party_swiftshader_src_Common_Configurator.cpp
similarity index 100%
rename from devel/electron11/files/patch-third__party_swiftshader_src_Common_Configurator.cpp
rename to devel/electron12/files/patch-third__party_swiftshader_src_Common_Configurator.cpp
diff --git a/devel/electron11/files/patch-third__party_swiftshader_src_Common_MutexLock.hpp b/devel/electron12/files/patch-third__party_swiftshader_src_Common_MutexLock.hpp
similarity index 100%
rename from devel/electron11/files/patch-third__party_swiftshader_src_Common_MutexLock.hpp
rename to devel/electron12/files/patch-third__party_swiftshader_src_Common_MutexLock.hpp
diff --git a/devel/electron11/files/patch-third__party_swiftshader_src_Common_SharedLibrary.hpp b/devel/electron12/files/patch-third__party_swiftshader_src_Common_SharedLibrary.hpp
similarity index 100%
rename from devel/electron11/files/patch-third__party_swiftshader_src_Common_SharedLibrary.hpp
rename to devel/electron12/files/patch-third__party_swiftshader_src_Common_SharedLibrary.hpp
diff --git a/devel/electron11/files/patch-third__party_swiftshader_src_Main_SwiftConfig.cpp b/devel/electron12/files/patch-third__party_swiftshader_src_Main_SwiftConfig.cpp
similarity index 100%
rename from devel/electron11/files/patch-third__party_swiftshader_src_Main_SwiftConfig.cpp
rename to devel/electron12/files/patch-third__party_swiftshader_src_Main_SwiftConfig.cpp
diff --git a/devel/electron11/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Display.cpp b/devel/electron12/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Display.cpp
similarity index 81%
rename from devel/electron11/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Display.cpp
rename to devel/electron12/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Display.cpp
index e669ad6f43f248b395f77b876d5f7f6bbb4917b9..b5636cd13e5e6e50be137d06012afea2702160f2 100644
--- a/devel/electron11/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Display.cpp
+++ b/devel/electron12/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Display.cpp
@@ -1,6 +1,6 @@
---- third_party/swiftshader/src/OpenGL/libEGL/Display.cpp.orig	2021-01-07 00:39:34 UTC
+--- third_party/swiftshader/src/OpenGL/libEGL/Display.cpp.orig	2021-04-14 01:15:28 UTC
 +++ third_party/swiftshader/src/OpenGL/libEGL/Display.cpp
-@@ -691,7 +691,7 @@ bool Display::isValidWindow(EGLNativeWindowType window
+@@ -684,7 +684,7 @@ bool Display::isValidWindow(EGLNativeWindowType window
  			return status != 0;
  		}
  		return false;
@@ -9,7 +9,7 @@
  		return false;  // Non X11 linux is headless only
  	#elif defined(__APPLE__)
  		return sw::OSX::IsValidWindow(window);
-@@ -869,7 +869,7 @@ sw::Format Display::getDisplayFormat() const
+@@ -862,7 +862,7 @@ sw::Format Display::getDisplayFormat() const
  		{
  			return sw::FORMAT_X8R8G8B8;
  		}
diff --git a/devel/electron11/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Surface.cpp b/devel/electron12/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Surface.cpp
similarity index 82%
rename from devel/electron11/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Surface.cpp
rename to devel/electron12/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Surface.cpp
index 41846bc274772dd181a5203c4cfff76afd32ce4d..3a4b07037070a0a9740526b262383daca344ac2c 100644
--- a/devel/electron11/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Surface.cpp
+++ b/devel/electron12/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Surface.cpp
@@ -1,6 +1,6 @@
---- third_party/swiftshader/src/OpenGL/libEGL/Surface.cpp.orig	2021-01-07 00:39:34 UTC
+--- third_party/swiftshader/src/OpenGL/libEGL/Surface.cpp.orig	2021-04-14 01:15:28 UTC
 +++ third_party/swiftshader/src/OpenGL/libEGL/Surface.cpp
-@@ -362,7 +362,7 @@ bool WindowSurface::checkForResize()
+@@ -357,7 +357,7 @@ bool WindowSurface::checkForResize()
  
  		int windowWidth = windowAttributes.width;
  		int windowHeight = windowAttributes.height;
diff --git a/devel/electron11/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.cpp b/devel/electron12/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.cpp
similarity index 100%
rename from devel/electron11/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.cpp
rename to devel/electron12/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.cpp
diff --git a/devel/electron11/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.hpp b/devel/electron12/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.hpp
similarity index 100%
rename from devel/electron11/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.hpp
rename to devel/electron12/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.hpp
diff --git a/devel/electron11/files/patch-third__party_swiftshader_src_OpenGL_libGLES__CM_libGLES__CM.hpp b/devel/electron12/files/patch-third__party_swiftshader_src_OpenGL_libGLES__CM_libGLES__CM.hpp
similarity index 100%
rename from devel/electron11/files/patch-third__party_swiftshader_src_OpenGL_libGLES__CM_libGLES__CM.hpp
rename to devel/electron12/files/patch-third__party_swiftshader_src_OpenGL_libGLES__CM_libGLES__CM.hpp
diff --git a/devel/electron11/files/patch-third__party_swiftshader_src_OpenGL_libGLESv2_libGLESv2.hpp b/devel/electron12/files/patch-third__party_swiftshader_src_OpenGL_libGLESv2_libGLESv2.hpp
similarity index 100%
rename from devel/electron11/files/patch-third__party_swiftshader_src_OpenGL_libGLESv2_libGLESv2.hpp
rename to devel/electron12/files/patch-third__party_swiftshader_src_OpenGL_libGLESv2_libGLESv2.hpp
diff --git a/devel/electron11/files/patch-third__party_swiftshader_src_Reactor_Debug.cpp b/devel/electron12/files/patch-third__party_swiftshader_src_Reactor_Debug.cpp
similarity index 100%
rename from devel/electron11/files/patch-third__party_swiftshader_src_Reactor_Debug.cpp
rename to devel/electron12/files/patch-third__party_swiftshader_src_Reactor_Debug.cpp
diff --git a/devel/electron11/files/patch-third__party_swiftshader_src_System_Debug.cpp b/devel/electron12/files/patch-third__party_swiftshader_src_System_Debug.cpp
similarity index 100%
rename from devel/electron11/files/patch-third__party_swiftshader_src_System_Debug.cpp
rename to devel/electron12/files/patch-third__party_swiftshader_src_System_Debug.cpp
diff --git a/devel/electron11/files/patch-third__party_swiftshader_third__party_llvm-10.0_configs_linux_include_llvm_Config_config.h b/devel/electron12/files/patch-third__party_swiftshader_third__party_llvm-10.0_configs_linux_include_llvm_Config_config.h
similarity index 100%
rename from devel/electron11/files/patch-third__party_swiftshader_third__party_llvm-10.0_configs_linux_include_llvm_Config_config.h
rename to devel/electron12/files/patch-third__party_swiftshader_third__party_llvm-10.0_configs_linux_include_llvm_Config_config.h
diff --git a/devel/electron11/files/patch-third__party_swiftshader_third__party_llvm-subzero_build_Linux_include_llvm_Config_config.h b/devel/electron12/files/patch-third__party_swiftshader_third__party_llvm-subzero_build_Linux_include_llvm_Config_config.h
similarity index 100%
rename from devel/electron11/files/patch-third__party_swiftshader_third__party_llvm-subzero_build_Linux_include_llvm_Config_config.h
rename to devel/electron12/files/patch-third__party_swiftshader_third__party_llvm-subzero_build_Linux_include_llvm_Config_config.h
diff --git a/devel/electron11/files/patch-third__party_swiftshader_third__party_llvm-subzero_lib_Support_Unix_Process.inc b/devel/electron12/files/patch-third__party_swiftshader_third__party_llvm-subzero_lib_Support_Unix_Process.inc
similarity index 100%
rename from devel/electron11/files/patch-third__party_swiftshader_third__party_llvm-subzero_lib_Support_Unix_Process.inc
rename to devel/electron12/files/patch-third__party_swiftshader_third__party_llvm-subzero_lib_Support_Unix_Process.inc
diff --git a/devel/electron12/files/patch-third__party_vulkan-deps_glslang_src_BUILD.gn b/devel/electron12/files/patch-third__party_vulkan-deps_glslang_src_BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..dabf6b75c61348268eefbb9bccc0c10b2d452247
--- /dev/null
+++ b/devel/electron12/files/patch-third__party_vulkan-deps_glslang_src_BUILD.gn
@@ -0,0 +1,15 @@
+--- third_party/vulkan-deps/glslang/src/BUILD.gn.orig	2021-04-14 01:15:33 UTC
++++ third_party/vulkan-deps/glslang/src/BUILD.gn
+@@ -239,6 +239,12 @@ template("glslang_sources_common") {
+         "-Wno-unused-variable",
+       ]
+     }
++    if (is_bsd) {
++      cflags -= [
++        "-Wno-suggest-destructor-override",
++        "-Wno-suggest-override",
++      ]
++    }
+     if (is_win && !is_clang) {
+       cflags = [
+         "/wd4018",  # signed/unsigned mismatch
diff --git a/devel/electron12/files/patch-third__party_vulkan-deps_vulkan-loader_src_loader_loader.c b/devel/electron12/files/patch-third__party_vulkan-deps_vulkan-loader_src_loader_loader.c
new file mode 100644
index 0000000000000000000000000000000000000000..cebfb3b273f34a4e5e74fab0eea998554f187ce6
--- /dev/null
+++ b/devel/electron12/files/patch-third__party_vulkan-deps_vulkan-loader_src_loader_loader.c
@@ -0,0 +1,11 @@
+--- third_party/vulkan-deps/vulkan-loader/src/loader/loader.c.orig	2021-04-14 01:15:34 UTC
++++ third_party/vulkan-deps/vulkan-loader/src/loader/loader.c
+@@ -253,7 +253,7 @@ void *loader_device_heap_realloc(const struct loader_d
+ }
+ 
+ // Environment variables
+-#if defined(__linux__) || defined(__APPLE__) || defined(__Fuchsia__)
++#if defined(__linux__) || defined(__APPLE__) || defined(__Fuchsia__) || defined(__FreeBSD__)
+ 
+ static inline bool IsHighIntegrity() {
+     return geteuid() != getuid() || getegid() != getgid();
diff --git a/devel/electron12/files/patch-third__party_vulkan-deps_vulkan-loader_src_loader_vk__loader__platform.h b/devel/electron12/files/patch-third__party_vulkan-deps_vulkan-loader_src_loader_vk__loader__platform.h
new file mode 100644
index 0000000000000000000000000000000000000000..76bbd9b561e022eadf1cc3cba80a5454344a96bd
--- /dev/null
+++ b/devel/electron12/files/patch-third__party_vulkan-deps_vulkan-loader_src_loader_vk__loader__platform.h
@@ -0,0 +1,42 @@
+--- third_party/vulkan-deps/vulkan-loader/src/loader/vk_loader_platform.h.orig	2021-04-14 01:15:34 UTC
++++ third_party/vulkan-deps/vulkan-loader/src/loader/vk_loader_platform.h
+@@ -35,7 +35,7 @@
+ #include "vulkan/vk_platform.h"
+ #include "vulkan/vk_sdk_platform.h"
+ 
+-#if defined(__linux__) || defined(__APPLE__) || defined(__Fuchsia__)
++#if defined(__linux__) || defined(__APPLE__) || defined(__Fuchsia__) || defined(__FreeBSD__)
+ /* Linux-specific common code: */
+ 
+ // Headers:
+@@ -52,6 +52,12 @@
+ #include <stdlib.h>
+ #include <libgen.h>
+ 
++#if defined(__FreeBSD__)
++#include <sys/types.h>
++#include <sys/user.h>
++#include <libutil.h>
++#endif
++
+ // VK Library Filenames, Paths, etc.:
+ #define PATH_SEPARATOR ':'
+ #define DIRECTORY_SYMBOL '/'
+@@ -120,6 +126,17 @@ static inline char *loader_platform_executable_path(ch
+     int ret = proc_pidpath(pid, buffer, size);
+     if (ret <= 0) return NULL;
+     buffer[ret] = '\0';
++    return buffer;
++}
++#elif defined(__FreeBSD__)
++static inline char *loader_platform_executable_path(char *buffer, size_t size) {
++    pid_t pid = getpid();
++    struct kinfo_proc *p = kinfo_getproc(pid);
++    if (p == NULL) return NULL;
++    size_t len = strnlen(p->ki_comm, size - 1);
++    memcpy(buffer, p->ki_comm, len);
++    buffer[len] = '\0';
++    free(p);
+     return buffer;
+ }
+ #elif defined(__Fuchsia__)
diff --git a/devel/electron11/files/patch-third__party_angle_third__party_vulkan-validation-layers_src_layers_vk__loader__platform.h b/devel/electron12/files/patch-third__party_vulkan-deps_vulkan-validation-layers_src_layers_vk__loader__platform.h
similarity index 53%
rename from devel/electron11/files/patch-third__party_angle_third__party_vulkan-validation-layers_src_layers_vk__loader__platform.h
rename to devel/electron12/files/patch-third__party_vulkan-deps_vulkan-validation-layers_src_layers_vk__loader__platform.h
index 10bc5b419a8fafd5674bc8588d267a301452a113..d5849c6cb2cd0e965b67c2240fa2a7755b0a6b77 100644
--- a/devel/electron11/files/patch-third__party_angle_third__party_vulkan-validation-layers_src_layers_vk__loader__platform.h
+++ b/devel/electron12/files/patch-third__party_vulkan-deps_vulkan-validation-layers_src_layers_vk__loader__platform.h
@@ -1,5 +1,5 @@
---- third_party/angle/third_party/vulkan-validation-layers/src/layers/vk_loader_platform.h.orig	2021-01-07 00:39:39 UTC
-+++ third_party/angle/third_party/vulkan-validation-layers/src/layers/vk_loader_platform.h
+--- third_party/vulkan-deps/vulkan-validation-layers/src/layers/vk_loader_platform.h.orig	2021-04-14 01:15:35 UTC
++++ third_party/vulkan-deps/vulkan-validation-layers/src/layers/vk_loader_platform.h
 @@ -33,7 +33,7 @@
  #undef NOMINMAX
  #include "vulkan/vk_sdk_platform.h"
diff --git a/devel/electron11/files/patch-third__party_webrtc_BUILD.gn b/devel/electron12/files/patch-third__party_webrtc_BUILD.gn
similarity index 64%
rename from devel/electron11/files/patch-third__party_webrtc_BUILD.gn
rename to devel/electron12/files/patch-third__party_webrtc_BUILD.gn
index 1748655b581c287052587dcba09a3e98f72da72e..b18177263e7f72d304530ebf4a7419f25ecc6933 100644
--- a/devel/electron11/files/patch-third__party_webrtc_BUILD.gn
+++ b/devel/electron12/files/patch-third__party_webrtc_BUILD.gn
@@ -1,6 +1,6 @@
---- third_party/webrtc/BUILD.gn.orig	2021-01-07 00:39:36 UTC
+--- third_party/webrtc/BUILD.gn.orig	2021-04-14 01:15:32 UTC
 +++ third_party/webrtc/BUILD.gn
-@@ -176,6 +176,9 @@ config("common_inherited_config") {
+@@ -179,6 +179,9 @@ config("common_inherited_config") {
    if (is_linux || is_chromeos) {
      defines += [ "WEBRTC_LINUX" ]
    }
diff --git a/devel/electron11/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn b/devel/electron12/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn
similarity index 100%
rename from devel/electron11/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn
rename to devel/electron12/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn
diff --git a/devel/electron11/files/patch-third__party_webrtc_modules_rtp__rtcp_source_forward__error__correction.cc b/devel/electron12/files/patch-third__party_webrtc_modules_rtp__rtcp_source_forward__error__correction.cc
similarity index 100%
rename from devel/electron11/files/patch-third__party_webrtc_modules_rtp__rtcp_source_forward__error__correction.cc
rename to devel/electron12/files/patch-third__party_webrtc_modules_rtp__rtcp_source_forward__error__correction.cc
diff --git a/devel/electron11/files/patch-third__party_webrtc_rtc__base_byte__order.h b/devel/electron12/files/patch-third__party_webrtc_rtc__base_byte__order.h
similarity index 100%
rename from devel/electron11/files/patch-third__party_webrtc_rtc__base_byte__order.h
rename to devel/electron12/files/patch-third__party_webrtc_rtc__base_byte__order.h
diff --git a/devel/electron11/files/patch-third__party_webrtc_rtc__base_ifaddrs__converter.h b/devel/electron12/files/patch-third__party_webrtc_rtc__base_ifaddrs__converter.h
similarity index 100%
rename from devel/electron11/files/patch-third__party_webrtc_rtc__base_ifaddrs__converter.h
rename to devel/electron12/files/patch-third__party_webrtc_rtc__base_ifaddrs__converter.h
diff --git a/devel/electron11/files/patch-third__party_webrtc_rtc__base_ip__address.cc b/devel/electron12/files/patch-third__party_webrtc_rtc__base_ip__address.cc
similarity index 100%
rename from devel/electron11/files/patch-third__party_webrtc_rtc__base_ip__address.cc
rename to devel/electron12/files/patch-third__party_webrtc_rtc__base_ip__address.cc
diff --git a/devel/electron11/files/patch-third__party_webrtc_rtc__base_ip__address.h b/devel/electron12/files/patch-third__party_webrtc_rtc__base_ip__address.h
similarity index 100%
rename from devel/electron11/files/patch-third__party_webrtc_rtc__base_ip__address.h
rename to devel/electron12/files/patch-third__party_webrtc_rtc__base_ip__address.h
diff --git a/devel/electron11/files/patch-third__party_webrtc_rtc__base_network.cc b/devel/electron12/files/patch-third__party_webrtc_rtc__base_network.cc
similarity index 100%
rename from devel/electron11/files/patch-third__party_webrtc_rtc__base_network.cc
rename to devel/electron12/files/patch-third__party_webrtc_rtc__base_network.cc
diff --git a/devel/electron11/files/patch-third__party_webrtc_rtc__base_network.h b/devel/electron12/files/patch-third__party_webrtc_rtc__base_network.h
similarity index 100%
rename from devel/electron11/files/patch-third__party_webrtc_rtc__base_network.h
rename to devel/electron12/files/patch-third__party_webrtc_rtc__base_network.h
diff --git a/devel/electron11/files/patch-third__party_webrtc_rtc__base_physical__socket__server.cc b/devel/electron12/files/patch-third__party_webrtc_rtc__base_physical__socket__server.cc
similarity index 95%
rename from devel/electron11/files/patch-third__party_webrtc_rtc__base_physical__socket__server.cc
rename to devel/electron12/files/patch-third__party_webrtc_rtc__base_physical__socket__server.cc
index 5a28e1cb02f74e84abe79c05e1fd584e78103360..b2dd083b351eb2f8bc165bfc02b4c3345a2005c5 100644
--- a/devel/electron11/files/patch-third__party_webrtc_rtc__base_physical__socket__server.cc
+++ b/devel/electron12/files/patch-third__party_webrtc_rtc__base_physical__socket__server.cc
@@ -1,4 +1,4 @@
---- third_party/webrtc/rtc_base/physical_socket_server.cc.orig	2021-01-07 00:39:38 UTC
+--- third_party/webrtc/rtc_base/physical_socket_server.cc.orig	2021-04-14 01:15:32 UTC
 +++ third_party/webrtc/rtc_base/physical_socket_server.cc
 @@ -50,7 +50,7 @@
  #include "rtc_base/null_socket_server.h"
@@ -36,7 +36,7 @@
      value = (value) ? IP_PMTUDISC_DO : IP_PMTUDISC_DONT;
  #endif
    } else if (opt == OPT_DSCP) {
-@@ -564,7 +564,7 @@ int PhysicalSocket::TranslateOption(Option opt, int* s
+@@ -571,7 +571,7 @@ int PhysicalSocket::TranslateOption(Option opt, int* s
        *slevel = IPPROTO_IP;
        *sopt = IP_DONTFRAGMENT;
        break;
diff --git a/devel/electron11/files/patch-third__party_webrtc_rtc__base_physical__socket__server.h b/devel/electron12/files/patch-third__party_webrtc_rtc__base_physical__socket__server.h
similarity index 100%
rename from devel/electron11/files/patch-third__party_webrtc_rtc__base_physical__socket__server.h
rename to devel/electron12/files/patch-third__party_webrtc_rtc__base_physical__socket__server.h
diff --git a/devel/electron11/files/patch-third__party_webrtc_rtc__base_platform__thread__types.cc b/devel/electron12/files/patch-third__party_webrtc_rtc__base_platform__thread__types.cc
similarity index 100%
rename from devel/electron11/files/patch-third__party_webrtc_rtc__base_platform__thread__types.cc
rename to devel/electron12/files/patch-third__party_webrtc_rtc__base_platform__thread__types.cc
diff --git a/devel/electron11/files/patch-third__party_webrtc_rtc__base_third__party_sigslot_sigslot.h b/devel/electron12/files/patch-third__party_webrtc_rtc__base_third__party_sigslot_sigslot.h
similarity index 100%
rename from devel/electron11/files/patch-third__party_webrtc_rtc__base_third__party_sigslot_sigslot.h
rename to devel/electron12/files/patch-third__party_webrtc_rtc__base_third__party_sigslot_sigslot.h
diff --git a/devel/electron11/files/patch-third__party_webrtc_system__wrappers_BUILD.gn b/devel/electron12/files/patch-third__party_webrtc_system__wrappers_BUILD.gn
similarity index 59%
rename from devel/electron11/files/patch-third__party_webrtc_system__wrappers_BUILD.gn
rename to devel/electron12/files/patch-third__party_webrtc_system__wrappers_BUILD.gn
index a36aa3bafc6d996c8226063c085e0dbec650c35e..8c66b13b632c63d8989dd4a379574bd7213bc91b 100644
--- a/devel/electron11/files/patch-third__party_webrtc_system__wrappers_BUILD.gn
+++ b/devel/electron12/files/patch-third__party_webrtc_system__wrappers_BUILD.gn
@@ -1,6 +1,6 @@
---- third_party/webrtc/system_wrappers/BUILD.gn.orig	2021-01-07 00:39:38 UTC
+--- third_party/webrtc/system_wrappers/BUILD.gn.orig	2021-04-14 01:15:32 UTC
 +++ third_party/webrtc/system_wrappers/BUILD.gn
-@@ -62,8 +62,6 @@ rtc_library("system_wrappers") {
+@@ -61,8 +61,6 @@ rtc_library("system_wrappers") {
      if (!build_with_chromium) {
        sources += [ "source/cpu_features_linux.cc" ]
      }
diff --git a/devel/electron11/files/patch-third__party_zlib_cpu__features.c b/devel/electron12/files/patch-third__party_zlib_cpu__features.c
similarity index 96%
rename from devel/electron11/files/patch-third__party_zlib_cpu__features.c
rename to devel/electron12/files/patch-third__party_zlib_cpu__features.c
index aa25354818104b6df77c28f791f19e6063392f73..e9c4774104e02966ffb5888c91e7e3b79e03cd53 100644
--- a/devel/electron11/files/patch-third__party_zlib_cpu__features.c
+++ b/devel/electron12/files/patch-third__party_zlib_cpu__features.c
@@ -1,4 +1,4 @@
---- third_party/zlib/cpu_features.c.orig	2021-01-07 00:37:24 UTC
+--- third_party/zlib/cpu_features.c.orig	2021-04-14 01:09:38 UTC
 +++ third_party/zlib/cpu_features.c
 @@ -31,11 +31,20 @@ int ZLIB_INTERNAL x86_cpu_enable_simd = 0;
  
diff --git a/devel/electron11/files/patch-tools_gn_build_gen.py b/devel/electron12/files/patch-tools_gn_build_gen.py
similarity index 100%
rename from devel/electron11/files/patch-tools_gn_build_gen.py
rename to devel/electron12/files/patch-tools_gn_build_gen.py
diff --git a/devel/electron11/files/patch-tools_gn_src_base_files_file__posix.cc b/devel/electron12/files/patch-tools_gn_src_base_files_file__posix.cc
similarity index 100%
rename from devel/electron11/files/patch-tools_gn_src_base_files_file__posix.cc
rename to devel/electron12/files/patch-tools_gn_src_base_files_file__posix.cc
diff --git a/devel/electron12/files/patch-tools_gn_src_base_files_scoped__file.cc b/devel/electron12/files/patch-tools_gn_src_base_files_scoped__file.cc
new file mode 100644
index 0000000000000000000000000000000000000000..69459340e0b959132e5a1fe342a13f76c5efa13e
--- /dev/null
+++ b/devel/electron12/files/patch-tools_gn_src_base_files_scoped__file.cc
@@ -0,0 +1,11 @@
+--- tools/gn/src/base/files/scoped_file.cc.orig	2021-04-14 01:22:08 UTC
++++ tools/gn/src/base/files/scoped_file.cc
+@@ -30,7 +30,7 @@ void ScopedFDCloseTraits::Free(int fd) {
+   // a single open directory would bypass the entire security model.
+   int ret = IGNORE_EINTR(close(fd));
+ 
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) || \
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) || defined(OS_BSD) || \
+     defined(OS_ANDROID) || defined(OS_BSD)
+   // NB: Some file descriptors can return errors from close() e.g. network
+   // filesystems such as NFS and Linux input devices. On Linux, macOS, and
diff --git a/devel/electron11/files/patch-tools_gn_src_gn_exec__process.cc b/devel/electron12/files/patch-tools_gn_src_gn_exec__process.cc
similarity index 100%
rename from devel/electron11/files/patch-tools_gn_src_gn_exec__process.cc
rename to devel/electron12/files/patch-tools_gn_src_gn_exec__process.cc
diff --git a/devel/electron11/files/patch-tools_gn_src_gn_function__write__file__unittest.cc b/devel/electron12/files/patch-tools_gn_src_gn_function__write__file__unittest.cc
similarity index 100%
rename from devel/electron11/files/patch-tools_gn_src_gn_function__write__file__unittest.cc
rename to devel/electron12/files/patch-tools_gn_src_gn_function__write__file__unittest.cc
diff --git a/devel/electron11/files/patch-tools_gn_src_gn_version.h b/devel/electron12/files/patch-tools_gn_src_gn_version.h
similarity index 100%
rename from devel/electron11/files/patch-tools_gn_src_gn_version.h
rename to devel/electron12/files/patch-tools_gn_src_gn_version.h
diff --git a/devel/electron11/files/patch-tools_gn_src_util_sys__info.cc b/devel/electron12/files/patch-tools_gn_src_util_sys__info.cc
similarity index 52%
rename from devel/electron11/files/patch-tools_gn_src_util_sys__info.cc
rename to devel/electron12/files/patch-tools_gn_src_util_sys__info.cc
index c192319b0638956d890966b253bec189d47013fb..f9fe00ede7ca6d5b9ec98ed51c302e3c96500898 100644
--- a/devel/electron11/files/patch-tools_gn_src_util_sys__info.cc
+++ b/devel/electron12/files/patch-tools_gn_src_util_sys__info.cc
@@ -1,11 +1,11 @@
---- tools/gn/src/util/sys_info.cc.orig	2021-01-07 00:45:48 UTC
+--- tools/gn/src/util/sys_info.cc.orig	2021-04-14 01:22:08 UTC
 +++ tools/gn/src/util/sys_info.cc
-@@ -33,6 +33,8 @@ std::string OperatingSystemArchitecture() {
+@@ -34,6 +34,8 @@ std::string OperatingSystemArchitecture() {
      arch = "x86_64";
    } else if (arch == "amd64") {
      arch = "x86_64";
 +  } else if (arch == "arm64") {
 +    arch = "aarch64";
-   } else if (std::string(info.sysname) == "AIX") {
+   } else if (os == "AIX" || os == "OS400") {
      arch = "ppc64";
    }
diff --git a/devel/electron11/files/patch-tools_json__schema__compiler_feature__compiler.py b/devel/electron12/files/patch-tools_json__schema__compiler_feature__compiler.py
similarity index 76%
rename from devel/electron11/files/patch-tools_json__schema__compiler_feature__compiler.py
rename to devel/electron12/files/patch-tools_json__schema__compiler_feature__compiler.py
index 116da31051b962c138e6babe234844e5fbb51205..f4f9059a939303650ab43c93e91c7fe5c3e41069 100644
--- a/devel/electron11/files/patch-tools_json__schema__compiler_feature__compiler.py
+++ b/devel/electron12/files/patch-tools_json__schema__compiler_feature__compiler.py
@@ -1,6 +1,6 @@
---- tools/json_schema_compiler/feature_compiler.py.orig	2021-01-07 00:37:24 UTC
+--- tools/json_schema_compiler/feature_compiler.py.orig	2021-04-14 01:09:38 UTC
 +++ tools/json_schema_compiler/feature_compiler.py
-@@ -243,6 +243,7 @@ FEATURE_GRAMMAR = ({
+@@ -252,6 +252,7 @@ FEATURE_GRAMMAR = ({
                  'chromeos': 'Feature::CHROMEOS_PLATFORM',
                  'lacros': 'Feature::LACROS_PLATFORM',
                  'linux': 'Feature::LINUX_PLATFORM',
diff --git a/devel/electron11/files/patch-tools_json__schema__compiler_model.py b/devel/electron12/files/patch-tools_json__schema__compiler_model.py
similarity index 73%
rename from devel/electron11/files/patch-tools_json__schema__compiler_model.py
rename to devel/electron12/files/patch-tools_json__schema__compiler_model.py
index 901f2c1b3220d173b9f224ca0ac782025815065d..cfdbde72aabc3e74f52a8f4185471375d2e87550 100644
--- a/devel/electron11/files/patch-tools_json__schema__compiler_model.py
+++ b/devel/electron12/files/patch-tools_json__schema__compiler_model.py
@@ -1,6 +1,6 @@
---- tools/json_schema_compiler/model.py.orig	2021-01-07 00:37:24 UTC
+--- tools/json_schema_compiler/model.py.orig	2021-04-14 01:09:38 UTC
 +++ tools/json_schema_compiler/model.py
-@@ -676,7 +676,7 @@ class Platforms(object):
+@@ -859,7 +859,7 @@ class Platforms(object):
    CHROMEOS = _PlatformInfo("chromeos")
    CHROMEOS_TOUCH = _PlatformInfo("chromeos_touch")
    LACROS = _PlatformInfo("lacros")
diff --git a/devel/electron11/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn b/devel/electron12/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn
similarity index 72%
rename from devel/electron11/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn
rename to devel/electron12/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn
index 09f5a80dac28411052c607737256e51f9dac9c2d..d01a40002daec9d22f1ddfd9e2a1e3ba4b352d98 100644
--- a/devel/electron11/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn
+++ b/devel/electron12/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn
@@ -1,6 +1,6 @@
---- tools/perf/chrome_telemetry_build/BUILD.gn.orig	2021-01-07 00:37:24 UTC
+--- tools/perf/chrome_telemetry_build/BUILD.gn.orig	2021-04-14 01:09:38 UTC
 +++ tools/perf/chrome_telemetry_build/BUILD.gn
-@@ -43,7 +43,7 @@ group("telemetry_chrome_test") {
+@@ -44,7 +44,7 @@ group("telemetry_chrome_test") {
      data_deps += [ "//chrome:reorder_imports" ]
    }
  
diff --git a/devel/electron11/files/patch-tools_variations_fieldtrial__to__struct.py b/devel/electron12/files/patch-tools_variations_fieldtrial__to__struct.py
similarity index 52%
rename from devel/electron11/files/patch-tools_variations_fieldtrial__to__struct.py
rename to devel/electron12/files/patch-tools_variations_fieldtrial__to__struct.py
index bf50a1239472c931c7669a2c3374ea01e6dd1531..01b1237ee11386f5203a2b93f007eada6b54a5f7 100644
--- a/devel/electron11/files/patch-tools_variations_fieldtrial__to__struct.py
+++ b/devel/electron12/files/patch-tools_variations_fieldtrial__to__struct.py
@@ -1,9 +1,9 @@
---- tools/variations/fieldtrial_to_struct.py.orig	2021-01-07 00:37:25 UTC
+--- tools/variations/fieldtrial_to_struct.py.orig	2021-04-14 01:09:39 UTC
 +++ tools/variations/fieldtrial_to_struct.py
-@@ -35,6 +35,7 @@ _platforms = [
-     'android_weblayer',
+@@ -36,6 +36,7 @@ _platforms = [
      'android_webview',
      'chromeos',
+     'chromeos_lacros',
 +    'freebsd',
      'fuchsia',
      'ios',
diff --git a/devel/electron11/files/patch-ui_aura_test_aura__test__helper.cc b/devel/electron12/files/patch-ui_aura_test_aura__test__helper.cc
similarity index 79%
rename from devel/electron11/files/patch-ui_aura_test_aura__test__helper.cc
rename to devel/electron12/files/patch-ui_aura_test_aura__test__helper.cc
index 177846ab6376a361d62c76b5a5f8b63ca611694e..1199f9cea3aee7ec51af5981d5f1b5a31b11f915 100644
--- a/devel/electron11/files/patch-ui_aura_test_aura__test__helper.cc
+++ b/devel/electron12/files/patch-ui_aura_test_aura__test__helper.cc
@@ -1,6 +1,6 @@
---- ui/aura/test/aura_test_helper.cc.orig	2021-01-07 00:37:26 UTC
+--- ui/aura/test/aura_test_helper.cc.orig	2021-04-14 01:09:39 UTC
 +++ ui/aura/test/aura_test_helper.cc
-@@ -29,7 +29,7 @@
+@@ -30,7 +30,7 @@
  #include "ui/wm/core/default_activation_client.h"
  #include "ui/wm/core/default_screen_position_client.h"
  
@@ -9,7 +9,7 @@
  #include "ui/platform_window/common/platform_window_defaults.h"  // nogncheck
  #endif
  
-@@ -59,7 +59,7 @@ AuraTestHelper::AuraTestHelper(ui::ContextFactory* con
+@@ -64,7 +64,7 @@ AuraTestHelper::AuraTestHelper(ui::ContextFactory* con
    DCHECK(!g_instance);
    g_instance = this;
  
diff --git a/devel/electron11/files/patch-ui_aura_test_ui__controls__ozone.cc b/devel/electron12/files/patch-ui_aura_test_ui__controls__ozone.cc
similarity index 80%
rename from devel/electron11/files/patch-ui_aura_test_ui__controls__ozone.cc
rename to devel/electron12/files/patch-ui_aura_test_ui__controls__ozone.cc
index 9a8f9da27db4967ce07e2fa93c35ad2224ab2283..15e41e5ed1a2ffd37207094c4b376123305ba4af 100644
--- a/devel/electron11/files/patch-ui_aura_test_ui__controls__ozone.cc
+++ b/devel/electron12/files/patch-ui_aura_test_ui__controls__ozone.cc
@@ -1,6 +1,6 @@
---- ui/aura/test/ui_controls_ozone.cc.orig	2021-01-07 00:37:26 UTC
+--- ui/aura/test/ui_controls_ozone.cc.orig	2021-04-14 01:09:39 UTC
 +++ ui/aura/test/ui_controls_ozone.cc
-@@ -348,7 +348,7 @@ bool UIControlsOzone::ScreenDIPToHostPixels(gfx::Point
+@@ -349,7 +349,7 @@ bool UIControlsOzone::ScreenDIPToHostPixels(gfx::Point
  // To avoid multiple definitions when use_x11 && use_ozone is true, disable this
  // factory method for OS_LINUX as Linux has a factory method that decides what
  // UIControls to use based on IsUsingOzonePlatform feature flag.
diff --git a/devel/electron11/files/patch-ui_base_clipboard_clipboard__constants.cc b/devel/electron12/files/patch-ui_base_clipboard_clipboard__constants.cc
similarity index 100%
rename from devel/electron11/files/patch-ui_base_clipboard_clipboard__constants.cc
rename to devel/electron12/files/patch-ui_base_clipboard_clipboard__constants.cc
diff --git a/devel/electron11/files/patch-ui_base_clipboard_clipboard__constants.h b/devel/electron12/files/patch-ui_base_clipboard_clipboard__constants.h
similarity index 100%
rename from devel/electron11/files/patch-ui_base_clipboard_clipboard__constants.h
rename to devel/electron12/files/patch-ui_base_clipboard_clipboard__constants.h
diff --git a/devel/electron12/files/patch-ui_base_clipboard_clipboard__ozone.cc b/devel/electron12/files/patch-ui_base_clipboard_clipboard__ozone.cc
new file mode 100644
index 0000000000000000000000000000000000000000..6cebfa0a5b8a8b6a48f953db3e2de145a4c2f167
--- /dev/null
+++ b/devel/electron12/files/patch-ui_base_clipboard_clipboard__ozone.cc
@@ -0,0 +1,11 @@
+--- ui/base/clipboard/clipboard_ozone.cc.orig	2021-04-14 01:09:39 UTC
++++ ui/base/clipboard/clipboard_ozone.cc
+@@ -305,7 +305,7 @@ class ClipboardOzone::AsyncClipboardOzone {
+ // of lacros-chrome is complete.
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if !(defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if !(defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
+ // Clipboard factory method.
+ Clipboard* Clipboard::Create() {
+ // linux-chromeos uses non-backed clipboard by default, but supports ozone x11
diff --git a/devel/electron12/files/patch-ui_base_dragdrop_os__exchange__data__provider.h b/devel/electron12/files/patch-ui_base_dragdrop_os__exchange__data__provider.h
new file mode 100644
index 0000000000000000000000000000000000000000..3a3358eba4f8202cfeebdf700618a698e23acc26
--- /dev/null
+++ b/devel/electron12/files/patch-ui_base_dragdrop_os__exchange__data__provider.h
@@ -0,0 +1,11 @@
+--- ui/base/dragdrop/os_exchange_data_provider.h.orig	2021-04-14 01:09:39 UTC
++++ ui/base/dragdrop/os_exchange_data_provider.h
+@@ -73,7 +73,7 @@ class COMPONENT_EXPORT(UI_BASE_DATA_EXCHANGE) OSExchan
+   virtual bool HasFile() const = 0;
+   virtual bool HasCustomFormat(const ClipboardFormatType& format) const = 0;
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN) || defined(OS_BSD)
+   virtual void SetFileContents(const base::FilePath& filename,
+                                const std::string& file_contents) = 0;
+ #endif
diff --git a/devel/electron11/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc b/devel/electron12/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc
similarity index 100%
rename from devel/electron11/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc
rename to devel/electron12/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc
diff --git a/devel/electron12/files/patch-ui_base_dragdrop_os__exchange__data__provider__non__backed.cc b/devel/electron12/files/patch-ui_base_dragdrop_os__exchange__data__provider__non__backed.cc
new file mode 100644
index 0000000000000000000000000000000000000000..5bf07b8964f2a59d091523287ec4ce1d03577684
--- /dev/null
+++ b/devel/electron12/files/patch-ui_base_dragdrop_os__exchange__data__provider__non__backed.cc
@@ -0,0 +1,28 @@
+--- ui/base/dragdrop/os_exchange_data_provider_non_backed.cc.orig	2021-04-14 01:09:39 UTC
++++ ui/base/dragdrop/os_exchange_data_provider_non_backed.cc
+@@ -100,14 +100,14 @@ void OSExchangeDataProviderNonBacked::SetPickledData(
+ }
+ 
+ bool OSExchangeDataProviderNonBacked::GetString(base::string16* data) const {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   if (HasFile()) {
+     // Various Linux file managers both pass a list of file:// URIs and set the
+     // string representation to the URI. We explicitly don't want to return use
+     // this representation.
+     return false;
+   }
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ 
+   if ((formats_ & OSExchangeData::STRING) == 0)
+     return false;
+@@ -184,7 +184,7 @@ bool OSExchangeDataProviderNonBacked::HasCustomFormat(
+   return base::Contains(pickle_data_, format);
+ }
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ void OSExchangeDataProviderNonBacked::SetFileContents(
+     const base::FilePath& filename,
+     const std::string& file_contents) {
diff --git a/devel/electron12/files/patch-ui_base_dragdrop_os__exchange__data__provider__non__backed.h b/devel/electron12/files/patch-ui_base_dragdrop_os__exchange__data__provider__non__backed.h
new file mode 100644
index 0000000000000000000000000000000000000000..6b8d1fd129ccc05579208e26d3db6b03c32c88e0
--- /dev/null
+++ b/devel/electron12/files/patch-ui_base_dragdrop_os__exchange__data__provider__non__backed.h
@@ -0,0 +1,11 @@
+--- ui/base/dragdrop/os_exchange_data_provider_non_backed.h.orig	2021-04-14 01:09:39 UTC
++++ ui/base/dragdrop/os_exchange_data_provider_non_backed.h
+@@ -61,7 +61,7 @@ class COMPONENT_EXPORT(UI_BASE) OSExchangeDataProvider
+   bool HasURL(FilenameToURLPolicy policy) const override;
+   bool HasFile() const override;
+   bool HasCustomFormat(const ClipboardFormatType& format) const override;
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   void SetFileContents(const base::FilePath& filename,
+                        const std::string& file_contents) override;
+ #endif
diff --git a/devel/electron12/files/patch-ui_base_ime_init_input__method__initializer.cc b/devel/electron12/files/patch-ui_base_ime_init_input__method__initializer.cc
new file mode 100644
index 0000000000000000000000000000000000000000..f05b3c6c3c7f586ba6e2bff7bdf3f0c681b5baff
--- /dev/null
+++ b/devel/electron12/files/patch-ui_base_ime_init_input__method__initializer.cc
@@ -0,0 +1,38 @@
+--- ui/base/ime/init/input_method_initializer.cc.orig	2021-04-14 01:09:39 UTC
++++ ui/base/ime/init/input_method_initializer.cc
+@@ -11,7 +11,7 @@
+ 
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
+ #include "ui/base/ime/chromeos/ime_bridge.h"
+-#elif defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#elif defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
+ #include "base/check.h"
+ #include "ui/base/ime/linux/fake_input_method_context_factory.h"
+ #elif defined(OS_WIN)
+@@ -21,7 +21,7 @@
+ 
+ namespace {
+ 
+-#if defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#if defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
+ const ui::LinuxInputMethodContextFactory*
+     g_linux_input_method_context_factory_for_testing;
+ #endif
+@@ -49,7 +49,7 @@ void ShutdownInputMethod() {
+ void InitializeInputMethodForTesting() {
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
+   IMEBridge::Initialize();
+-#elif defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#elif defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
+   if (!g_linux_input_method_context_factory_for_testing)
+     g_linux_input_method_context_factory_for_testing =
+         new FakeInputMethodContextFactory();
+@@ -68,7 +68,7 @@ void InitializeInputMethodForTesting() {
+ void ShutdownInputMethodForTesting() {
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
+   IMEBridge::Shutdown();
+-#elif defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS))
++#elif defined(USE_AURA) && (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD))
+   const LinuxInputMethodContextFactory* factory =
+       LinuxInputMethodContextFactory::instance();
+   CHECK(!factory || factory == g_linux_input_method_context_factory_for_testing)
diff --git a/devel/electron11/files/patch-ui_base_resource_resource__bundle.cc b/devel/electron12/files/patch-ui_base_resource_resource__bundle.cc
similarity index 81%
rename from devel/electron11/files/patch-ui_base_resource_resource__bundle.cc
rename to devel/electron12/files/patch-ui_base_resource_resource__bundle.cc
index cadf0db64a9b7b2a6c15bf2a4bf2619b6d5ab0a0..dfc4bb41bbcf0398a4cdb1ed8f01711fda3f5175 100644
--- a/devel/electron11/files/patch-ui_base_resource_resource__bundle.cc
+++ b/devel/electron12/files/patch-ui_base_resource_resource__bundle.cc
@@ -1,6 +1,6 @@
---- ui/base/resource/resource_bundle.cc.orig	2021-01-07 00:37:26 UTC
+--- ui/base/resource/resource_bundle.cc.orig	2021-04-14 01:09:39 UTC
 +++ ui/base/resource/resource_bundle.cc
-@@ -844,7 +844,7 @@ void ResourceBundle::ReloadFonts() {
+@@ -821,7 +821,7 @@ void ResourceBundle::ReloadFonts() {
  }
  
  ScaleFactor ResourceBundle::GetMaxScaleFactor() const {
@@ -9,7 +9,7 @@
    return max_scale_factor_;
  #else
    return GetSupportedScaleFactors().back();
-@@ -897,7 +897,7 @@ void ResourceBundle::InitSharedInstance(Delegate* dele
+@@ -874,7 +874,7 @@ void ResourceBundle::InitSharedInstance(Delegate* dele
    // On platforms other than iOS, 100P is always a supported scale factor.
    // For Windows we have a separate case in this function.
    supported_scale_factors.push_back(SCALE_FACTOR_100P);
diff --git a/devel/electron11/files/patch-ui_base_resource_resource__bundle__freebsd.cc b/devel/electron12/files/patch-ui_base_resource_resource__bundle__freebsd.cc
similarity index 100%
rename from devel/electron11/files/patch-ui_base_resource_resource__bundle__freebsd.cc
rename to devel/electron12/files/patch-ui_base_resource_resource__bundle__freebsd.cc
diff --git a/devel/electron12/files/patch-ui_base_test_skia__gold__pixel__diff.cc b/devel/electron12/files/patch-ui_base_test_skia__gold__pixel__diff.cc
new file mode 100644
index 0000000000000000000000000000000000000000..c7402c4b49f369e2c6d90b43a047bbb86a5fb9c7
--- /dev/null
+++ b/devel/electron12/files/patch-ui_base_test_skia__gold__pixel__diff.cc
@@ -0,0 +1,11 @@
+--- ui/base/test/skia_gold_pixel_diff.cc.orig	2021-04-14 01:09:39 UTC
++++ ui/base/test/skia_gold_pixel_diff.cc
+@@ -168,7 +168,7 @@ std::string SkiaGoldPixelDiff::GetPlatform() {
+   return "macOS";
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   return "linux";
+ #endif
+ }
diff --git a/devel/electron11/files/patch-ui_base_ui__base__features.cc b/devel/electron12/files/patch-ui_base_ui__base__features.cc
similarity index 52%
rename from devel/electron11/files/patch-ui_base_ui__base__features.cc
rename to devel/electron12/files/patch-ui_base_ui__base__features.cc
index e15b14abe51496b02585ad7faaca3f9bee4733bd..a4217bfe17b3ba4205e2a13a2457f7f8e5dedc00 100644
--- a/devel/electron11/files/patch-ui_base_ui__base__features.cc
+++ b/devel/electron12/files/patch-ui_base_ui__base__features.cc
@@ -1,15 +1,15 @@
---- ui/base/ui_base_features.cc.orig	2021-01-07 00:37:26 UTC
+--- ui/base/ui_base_features.cc.orig	2021-04-14 01:09:39 UTC
 +++ ui/base/ui_base_features.cc
-@@ -100,7 +100,7 @@ const base::Feature kCompositorThreadedScrollbarScroll
- // native apps on Windows.
- const base::Feature kExperimentalFlingAnimation {
+@@ -115,7 +115,7 @@ const base::Feature kExperimentalFlingAnimation {
    "ExperimentalFlingAnimation",
--#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_WIN) || (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_ASH) && \
++#if defined(OS_WIN) || defined(OS_BSD) || (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMEOS_ASH) && \
+                         !BUILDFLAG(IS_CHROMEOS_LACROS))
        base::FEATURE_ENABLED_BY_DEFAULT
  #else
-       base::FEATURE_DISABLED_BY_DEFAULT
-@@ -132,7 +132,7 @@ const base::Feature kPrecisionTouchpadLogging{
+@@ -148,7 +148,7 @@ const base::Feature kPrecisionTouchpadLogging{
      "PrecisionTouchpadLogging", base::FEATURE_DISABLED_BY_DEFAULT};
  #endif  // defined(OS_WIN)
  
@@ -18,7 +18,7 @@
      defined(OS_CHROMEOS)
  // Enables stylus appearing as touch when in contact with digitizer.
  const base::Feature kDirectManipulationStylus = {
-@@ -143,7 +143,7 @@ const base::Feature kDirectManipulationStylus = {
+@@ -159,7 +159,7 @@ const base::Feature kDirectManipulationStylus = {
      base::FEATURE_DISABLED_BY_DEFAULT
  #endif
  };
@@ -27,7 +27,16 @@
          // defined(OS_CHROMEOS)
  
  // Enables forced colors mode for web content.
-@@ -182,7 +182,7 @@ bool IsCSSColorSchemeUARenderingEnabled() {
+@@ -193,7 +193,7 @@ bool IsEyeDropperEnabled() {
+ // crbug.com/1086530 for the Desktop launch bug.
+ const base::Feature kCSSColorSchemeUARendering = {
+     "CSSColorSchemeUARendering",
+-#if defined(OS_WIN) || defined(OS_CHROMEOS) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD) || \
+     defined(OS_APPLE)
+                                             base::FEATURE_ENABLED_BY_DEFAULT
+ #else
+@@ -212,7 +212,7 @@ bool IsCSSColorSchemeUARenderingEnabled() {
  // crbug.com/1012106 for the Windows launch bug, and crbug.com/1012108 for the
  // Mac launch bug.
  const base::Feature kFormControlsRefresh = {"FormControlsRefresh",
diff --git a/devel/electron11/files/patch-ui_base_ui__base__features.h b/devel/electron12/files/patch-ui_base_ui__base__features.h
similarity index 84%
rename from devel/electron11/files/patch-ui_base_ui__base__features.h
rename to devel/electron12/files/patch-ui_base_ui__base__features.h
index a0c72706832fc9cef6ab1360a29aa390a40f63f4..c3d23aaba691da59157a778b2cbb71e9f84b6d90 100644
--- a/devel/electron11/files/patch-ui_base_ui__base__features.h
+++ b/devel/electron12/files/patch-ui_base_ui__base__features.h
@@ -1,6 +1,6 @@
---- ui/base/ui_base_features.h.orig	2021-01-07 00:37:26 UTC
+--- ui/base/ui_base_features.h.orig	2021-04-14 01:09:39 UTC
 +++ ui/base/ui_base_features.h
-@@ -60,11 +60,11 @@ COMPONENT_EXPORT(UI_BASE_FEATURES) extern const base::
+@@ -63,11 +63,11 @@ COMPONENT_EXPORT(UI_BASE_FEATURES) extern const base::
  COMPONENT_EXPORT(UI_BASE_FEATURES) bool IsUsingWMPointerForTouch();
  #endif  // defined(OS_WIN)
  
diff --git a/devel/electron12/files/patch-ui_base_webui_web__ui__util.cc b/devel/electron12/files/patch-ui_base_webui_web__ui__util.cc
new file mode 100644
index 0000000000000000000000000000000000000000..3d6554c67382437835b22f45a803d0551c1fdfaf
--- /dev/null
+++ b/devel/electron12/files/patch-ui_base_webui_web__ui__util.cc
@@ -0,0 +1,11 @@
+--- ui/base/webui/web_ui_util.cc.orig	2021-04-14 01:09:39 UTC
++++ ui/base/webui/web_ui_util.cc
+@@ -224,7 +224,7 @@ std::string GetFontFamily() {
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   std::string font_name = ui::ResourceBundle::GetSharedInstance()
+                               .GetFont(ui::ResourceBundle::BaseFont)
+                               .GetFontName();
diff --git a/devel/electron11/files/patch-ui_base_x_x11__shm__image__pool.cc b/devel/electron12/files/patch-ui_base_x_x11__shm__image__pool.cc
similarity index 79%
rename from devel/electron11/files/patch-ui_base_x_x11__shm__image__pool.cc
rename to devel/electron12/files/patch-ui_base_x_x11__shm__image__pool.cc
index fb1e4c69ad10eb16812ba8bedd77d94de2cbab70..e0fa5679e7a3a887675ddbb741be2aef1c09d895 100644
--- a/devel/electron11/files/patch-ui_base_x_x11__shm__image__pool.cc
+++ b/devel/electron12/files/patch-ui_base_x_x11__shm__image__pool.cc
@@ -1,4 +1,4 @@
---- ui/base/x/x11_shm_image_pool.cc.orig	2021-01-07 00:37:26 UTC
+--- ui/base/x/x11_shm_image_pool.cc.orig	2021-04-14 01:09:39 UTC
 +++ ui/base/x/x11_shm_image_pool.cc
 @@ -16,6 +16,7 @@
  #include "base/environment.h"
@@ -7,8 +7,8 @@
 +#include "base/system/sys_info.h"
  #include "base/threading/thread_task_runner_handle.h"
  #include "build/build_config.h"
- #include "net/base/url_util.h"
-@@ -45,10 +46,14 @@ constexpr float kShmResizeShrinkThreshold =
+ #include "build/chromeos_buildflags.h"
+@@ -46,10 +47,14 @@ constexpr float kShmResizeShrinkThreshold =
      1.0f / (kShmResizeThreshold * kShmResizeThreshold);
  
  std::size_t MaxShmSegmentSizeImpl() {
diff --git a/devel/electron12/files/patch-ui_compositor_compositor.cc b/devel/electron12/files/patch-ui_compositor_compositor.cc
new file mode 100644
index 0000000000000000000000000000000000000000..9383d5e3cf6ef7f150e042250b9eae7620a2b41b
--- /dev/null
+++ b/devel/electron12/files/patch-ui_compositor_compositor.cc
@@ -0,0 +1,11 @@
+--- ui/compositor/compositor.cc.orig	2021-04-14 01:09:39 UTC
++++ ui/compositor/compositor.cc
+@@ -750,7 +750,7 @@ void Compositor::CancelThroughtputTracker(TrackerId tr
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ void Compositor::OnCompleteSwapWithNewSize(const gfx::Size& size) {
+   for (auto& observer : observer_list_)
+     observer.OnCompositingCompleteSwapWithNewSize(this, size);
diff --git a/devel/electron12/files/patch-ui_compositor_compositor.h b/devel/electron12/files/patch-ui_compositor_compositor.h
new file mode 100644
index 0000000000000000000000000000000000000000..4adaaa634b6b134a1b813a471511504e7f868050
--- /dev/null
+++ b/devel/electron12/files/patch-ui_compositor_compositor.h
@@ -0,0 +1,11 @@
+--- ui/compositor/compositor.h.orig	2021-04-22 07:51:51 UTC
++++ ui/compositor/compositor.h
+@@ -384,7 +384,7 @@ class COMPOSITOR_EXPORT Compositor : public cc::LayerT
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   void OnCompleteSwapWithNewSize(const gfx::Size& size);
+ #endif
+ 
diff --git a/devel/electron11/files/patch-ui_compositor_compositor__observer.h b/devel/electron12/files/patch-ui_compositor_compositor__observer.h
similarity index 57%
rename from devel/electron11/files/patch-ui_compositor_compositor__observer.h
rename to devel/electron12/files/patch-ui_compositor_compositor__observer.h
index b813eab160f89040d918f12712e52ba0e11b2dc5..0048a116b750102480907800b64c8e8e590b14f6 100644
--- a/devel/electron11/files/patch-ui_compositor_compositor__observer.h
+++ b/devel/electron12/files/patch-ui_compositor_compositor__observer.h
@@ -1,11 +1,11 @@
---- ui/compositor/compositor_observer.h.orig	2021-01-07 00:37:27 UTC
+--- ui/compositor/compositor_observer.h.orig	2021-04-14 01:09:39 UTC
 +++ ui/compositor/compositor_observer.h
-@@ -42,11 +42,11 @@ class COMPOSITOR_EXPORT CompositorObserver {
-   // Called when a child of the compositor is resizing.
-   virtual void OnCompositingChildResizing(Compositor* compositor) {}
+@@ -46,11 +46,11 @@ class COMPOSITOR_EXPORT CompositorObserver {
  
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
    // Called when a swap with new size is completed.
    virtual void OnCompositingCompleteSwapWithNewSize(ui::Compositor* compositor,
                                                      const gfx::Size& size) {}
diff --git a/devel/electron11/files/patch-ui_events_devices_x11_device__data__manager__x11.cc b/devel/electron12/files/patch-ui_events_devices_x11_device__data__manager__x11.cc
similarity index 100%
rename from devel/electron11/files/patch-ui_events_devices_x11_device__data__manager__x11.cc
rename to devel/electron12/files/patch-ui_events_devices_x11_device__data__manager__x11.cc
diff --git a/devel/electron11/files/patch-ui_events_event.cc b/devel/electron12/files/patch-ui_events_event.cc
similarity index 79%
rename from devel/electron11/files/patch-ui_events_event.cc
rename to devel/electron12/files/patch-ui_events_event.cc
index 09de82cac8047dd58df6af5e5971b101885bc044..d9dd7a985a36da68bed11a4743d1e16414372973 100644
--- a/devel/electron11/files/patch-ui_events_event.cc
+++ b/devel/electron12/files/patch-ui_events_event.cc
@@ -1,6 +1,6 @@
---- ui/events/event.cc.orig	2021-01-07 00:37:28 UTC
+--- ui/events/event.cc.orig	2021-04-14 01:09:39 UTC
 +++ ui/events/event.cc
-@@ -469,7 +469,7 @@ std::string LocatedEvent::ToString() const {
+@@ -451,7 +451,7 @@ std::string LocatedEvent::ToString() const {
  MouseEvent::MouseEvent(const PlatformEvent& native_event)
      : LocatedEvent(native_event),
        changed_button_flags_(GetChangedMouseButtonFlagsFromNative(native_event)),
diff --git a/devel/electron11/files/patch-ui_events_event__switches.cc b/devel/electron12/files/patch-ui_events_event__switches.cc
similarity index 100%
rename from devel/electron11/files/patch-ui_events_event__switches.cc
rename to devel/electron12/files/patch-ui_events_event__switches.cc
diff --git a/devel/electron11/files/patch-ui_events_event__switches.h b/devel/electron12/files/patch-ui_events_event__switches.h
similarity index 100%
rename from devel/electron11/files/patch-ui_events_event__switches.h
rename to devel/electron12/files/patch-ui_events_event__switches.h
diff --git a/devel/electron11/files/patch-ui_events_keycodes_dom_keycode__converter.cc b/devel/electron12/files/patch-ui_events_keycodes_dom_keycode__converter.cc
similarity index 77%
rename from devel/electron11/files/patch-ui_events_keycodes_dom_keycode__converter.cc
rename to devel/electron12/files/patch-ui_events_keycodes_dom_keycode__converter.cc
index 0dc4ba667932845541357a8593eaaee265bab64a..f912d0e2d45c0f4c4c55dcbb052501c7fae2eadf 100644
--- a/devel/electron11/files/patch-ui_events_keycodes_dom_keycode__converter.cc
+++ b/devel/electron12/files/patch-ui_events_keycodes_dom_keycode__converter.cc
@@ -1,6 +1,6 @@
---- ui/events/keycodes/dom/keycode_converter.cc.orig	2021-01-07 00:37:28 UTC
+--- ui/events/keycodes/dom/keycode_converter.cc.orig	2021-04-14 01:09:39 UTC
 +++ ui/events/keycodes/dom/keycode_converter.cc
-@@ -20,7 +20,7 @@ namespace {
+@@ -24,7 +24,7 @@ namespace {
  #if defined(OS_WIN)
  #define DOM_CODE(usb, evdev, xkb, win, mac, code, id) \
    { usb, win, code }
diff --git a/devel/electron11/files/patch-ui_events_ozone_keyboard__hook__ozone.cc b/devel/electron12/files/patch-ui_events_ozone_keyboard__hook__ozone.cc
similarity index 100%
rename from devel/electron11/files/patch-ui_events_ozone_keyboard__hook__ozone.cc
rename to devel/electron12/files/patch-ui_events_ozone_keyboard__hook__ozone.cc
diff --git a/devel/electron11/files/patch-ui_gfx_BUILD.gn b/devel/electron12/files/patch-ui_gfx_BUILD.gn
similarity index 68%
rename from devel/electron11/files/patch-ui_gfx_BUILD.gn
rename to devel/electron12/files/patch-ui_gfx_BUILD.gn
index 8ffd07da49963f335beb277b6b3ed62a966ef39b..bcfb64ba23f817cc69d12586bb4ec294d3da3691 100644
--- a/devel/electron11/files/patch-ui_gfx_BUILD.gn
+++ b/devel/electron12/files/patch-ui_gfx_BUILD.gn
@@ -1,6 +1,6 @@
---- ui/gfx/BUILD.gn.orig	2021-01-07 00:37:28 UTC
+--- ui/gfx/BUILD.gn.orig	2021-04-14 01:09:39 UTC
 +++ ui/gfx/BUILD.gn
-@@ -572,7 +572,7 @@ source_set("memory_buffer_sources") {
+@@ -590,7 +590,7 @@ source_set("memory_buffer_sources") {
      deps += [ "//build/config/linux/libdrm" ]
    }
  
diff --git a/devel/electron11/files/patch-ui_gfx_canvas__skia.cc b/devel/electron12/files/patch-ui_gfx_canvas__skia.cc
similarity index 78%
rename from devel/electron11/files/patch-ui_gfx_canvas__skia.cc
rename to devel/electron12/files/patch-ui_gfx_canvas__skia.cc
index 516e801d85162a1068124c6fa8da4ff10f30eaba..ca7fb2736b3809d91b354e68f7a213d07c2cbb79 100644
--- a/devel/electron11/files/patch-ui_gfx_canvas__skia.cc
+++ b/devel/electron12/files/patch-ui_gfx_canvas__skia.cc
@@ -1,6 +1,6 @@
---- ui/gfx/canvas_skia.cc.orig	2021-01-07 00:37:28 UTC
+--- ui/gfx/canvas_skia.cc.orig	2021-04-14 01:09:39 UTC
 +++ ui/gfx/canvas_skia.cc
-@@ -206,7 +206,7 @@ void Canvas::DrawStringRectWithFlags(const base::strin
+@@ -209,7 +209,7 @@ void Canvas::DrawStringRectWithFlags(const base::strin
      Range range = StripAcceleratorChars(flags, &adjusted_text);
      bool elide_text = ((flags & NO_ELLIPSIS) == 0);
  
diff --git a/devel/electron11/files/patch-ui_gfx_codec_jpeg__codec.cc b/devel/electron12/files/patch-ui_gfx_codec_jpeg__codec.cc
similarity index 100%
rename from devel/electron11/files/patch-ui_gfx_codec_jpeg__codec.cc
rename to devel/electron12/files/patch-ui_gfx_codec_jpeg__codec.cc
diff --git a/devel/electron11/files/patch-ui_gfx_font__fallback__linux.cc b/devel/electron12/files/patch-ui_gfx_font__fallback__linux.cc
similarity index 100%
rename from devel/electron11/files/patch-ui_gfx_font__fallback__linux.cc
rename to devel/electron12/files/patch-ui_gfx_font__fallback__linux.cc
diff --git a/devel/electron11/files/patch-ui_gfx_font__list.cc b/devel/electron12/files/patch-ui_gfx_font__list.cc
similarity index 100%
rename from devel/electron11/files/patch-ui_gfx_font__list.cc
rename to devel/electron12/files/patch-ui_gfx_font__list.cc
diff --git a/devel/electron11/files/patch-ui_gfx_font__names__testing.cc b/devel/electron12/files/patch-ui_gfx_font__names__testing.cc
similarity index 100%
rename from devel/electron11/files/patch-ui_gfx_font__names__testing.cc
rename to devel/electron12/files/patch-ui_gfx_font__names__testing.cc
diff --git a/devel/electron11/files/patch-ui_gfx_font__render__params.h b/devel/electron12/files/patch-ui_gfx_font__render__params.h
similarity index 81%
rename from devel/electron11/files/patch-ui_gfx_font__render__params.h
rename to devel/electron12/files/patch-ui_gfx_font__render__params.h
index 71900230464ff9b54fc528b4c2f07190cbc81b59..bf9c24802e61fea369bb3a65cdabbb93d76a937a 100644
--- a/devel/electron11/files/patch-ui_gfx_font__render__params.h
+++ b/devel/electron12/files/patch-ui_gfx_font__render__params.h
@@ -1,6 +1,6 @@
---- ui/gfx/font_render_params.h.orig	2021-01-07 00:37:28 UTC
+--- ui/gfx/font_render_params.h.orig	2021-04-14 01:09:39 UTC
 +++ ui/gfx/font_render_params.h
-@@ -111,7 +111,7 @@ GFX_EXPORT FontRenderParams GetFontRenderParams(
+@@ -109,7 +109,7 @@ GFX_EXPORT FontRenderParams GetFontRenderParams(
      const FontRenderParamsQuery& query,
      std::string* family_out);
  
@@ -9,7 +9,7 @@
  // Clears GetFontRenderParams()'s cache. Intended to be called by tests that are
  // changing Fontconfig's configuration.
  GFX_EXPORT void ClearFontRenderParamsCacheForTest();
-@@ -120,7 +120,7 @@ GFX_EXPORT void ClearFontRenderParamsCacheForTest();
+@@ -118,7 +118,7 @@ GFX_EXPORT void ClearFontRenderParamsCacheForTest();
  // Gets the device scale factor to query the FontRenderParams.
  GFX_EXPORT float GetFontRenderParamsDeviceScaleFactor();
  
diff --git a/devel/electron11/files/patch-ui_gfx_font__util.cc b/devel/electron12/files/patch-ui_gfx_font__util.cc
similarity index 100%
rename from devel/electron11/files/patch-ui_gfx_font__util.cc
rename to devel/electron12/files/patch-ui_gfx_font__util.cc
diff --git a/devel/electron11/files/patch-ui_gfx_gpu__memory__buffer.cc b/devel/electron12/files/patch-ui_gfx_gpu__memory__buffer.cc
similarity index 82%
rename from devel/electron11/files/patch-ui_gfx_gpu__memory__buffer.cc
rename to devel/electron12/files/patch-ui_gfx_gpu__memory__buffer.cc
index 14636d6472c6a5e5b8fdbe63479ddec0ea175480..fe69eb2d9b86ec0873dec682326c57929af88065 100644
--- a/devel/electron11/files/patch-ui_gfx_gpu__memory__buffer.cc
+++ b/devel/electron12/files/patch-ui_gfx_gpu__memory__buffer.cc
@@ -1,4 +1,4 @@
---- ui/gfx/gpu_memory_buffer.cc.orig	2021-01-07 00:37:28 UTC
+--- ui/gfx/gpu_memory_buffer.cc.orig	2021-04-14 01:09:39 UTC
 +++ ui/gfx/gpu_memory_buffer.cc
 @@ -34,7 +34,7 @@ GpuMemoryBufferHandle GpuMemoryBufferHandle::Clone() c
    handle.region = region.Duplicate();
@@ -8,4 +8,4 @@
 +#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
    handle.native_pixmap_handle = CloneHandleForIPC(native_pixmap_handle);
  #elif defined(OS_MAC)
-   handle.mach_port = mach_port;
+   handle.io_surface = io_surface;
diff --git a/devel/electron11/files/patch-ui_gfx_gpu__memory__buffer.h b/devel/electron12/files/patch-ui_gfx_gpu__memory__buffer.h
similarity index 74%
rename from devel/electron11/files/patch-ui_gfx_gpu__memory__buffer.h
rename to devel/electron12/files/patch-ui_gfx_gpu__memory__buffer.h
index 760195b759acb8f66642242c4a10ec46e132d328..8aec7987bbe130a4b154e0f97e1ba066ab29419a 100644
--- a/devel/electron11/files/patch-ui_gfx_gpu__memory__buffer.h
+++ b/devel/electron12/files/patch-ui_gfx_gpu__memory__buffer.h
@@ -1,15 +1,15 @@
---- ui/gfx/gpu_memory_buffer.h.orig	2021-01-07 00:37:28 UTC
+--- ui/gfx/gpu_memory_buffer.h.orig	2021-04-14 01:09:39 UTC
 +++ ui/gfx/gpu_memory_buffer.h
-@@ -15,7 +15,7 @@
- #include "ui/gfx/geometry/rect.h"
+@@ -16,7 +16,7 @@
  #include "ui/gfx/gfx_export.h"
+ #include "ui/gfx/hdr_metadata.h"
  
 -#if defined(USE_OZONE) || defined(OS_LINUX) || defined(OS_CHROMEOS)
 +#if defined(USE_OZONE) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include "ui/gfx/native_pixmap_handle.h"
  #elif defined(OS_MAC)
  #include "ui/gfx/mac/io_surface.h"
-@@ -69,7 +69,7 @@ struct GFX_EXPORT GpuMemoryBufferHandle {
+@@ -70,7 +70,7 @@ struct GFX_EXPORT GpuMemoryBufferHandle {
    base::UnsafeSharedMemoryRegion region;
    uint32_t offset = 0;
    int32_t stride = 0;
@@ -17,4 +17,4 @@
 +#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
    NativePixmapHandle native_pixmap_handle;
  #elif defined(OS_MAC)
-   ScopedRefCountedIOSurfaceMachPort mach_port;
+   ScopedIOSurface io_surface;
diff --git a/devel/electron11/files/patch-ui_gfx_ipc_gfx__param__traits__macros.h b/devel/electron12/files/patch-ui_gfx_ipc_gfx__param__traits__macros.h
similarity index 94%
rename from devel/electron11/files/patch-ui_gfx_ipc_gfx__param__traits__macros.h
rename to devel/electron12/files/patch-ui_gfx_ipc_gfx__param__traits__macros.h
index 0c092e1a509ef7a292d936c0e3766c03df47e749..7e997a5051703ad7b0b865d8b6ae5606ced964e9 100644
--- a/devel/electron11/files/patch-ui_gfx_ipc_gfx__param__traits__macros.h
+++ b/devel/electron12/files/patch-ui_gfx_ipc_gfx__param__traits__macros.h
@@ -1,4 +1,4 @@
---- ui/gfx/ipc/gfx_param_traits_macros.h.orig	2021-01-07 00:37:29 UTC
+--- ui/gfx/ipc/gfx_param_traits_macros.h.orig	2021-04-14 01:09:39 UTC
 +++ ui/gfx/ipc/gfx_param_traits_macros.h
 @@ -18,7 +18,7 @@
  #include "ui/gfx/selection_bound.h"
@@ -17,7 +17,7 @@
 +#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
    IPC_STRUCT_TRAITS_MEMBER(native_pixmap_handle)
  #elif defined(OS_APPLE)
-   IPC_STRUCT_TRAITS_MEMBER(mach_port)
+   IPC_STRUCT_TRAITS_MEMBER(io_surface)
 @@ -63,12 +63,12 @@ IPC_STRUCT_TRAITS_BEGIN(gfx::GpuMemoryBufferId)
    IPC_STRUCT_TRAITS_MEMBER(id)
  IPC_STRUCT_TRAITS_END()
diff --git a/devel/electron11/files/patch-ui_gfx_linux_client__native__pixmap__dmabuf.cc b/devel/electron12/files/patch-ui_gfx_linux_client__native__pixmap__dmabuf.cc
similarity index 84%
rename from devel/electron11/files/patch-ui_gfx_linux_client__native__pixmap__dmabuf.cc
rename to devel/electron12/files/patch-ui_gfx_linux_client__native__pixmap__dmabuf.cc
index f9bbc34f12f0127af2443a938d051796706ab217..a2f6a3b7fbac90257f7bb6b7a9e955a66767fe77 100644
--- a/devel/electron11/files/patch-ui_gfx_linux_client__native__pixmap__dmabuf.cc
+++ b/devel/electron12/files/patch-ui_gfx_linux_client__native__pixmap__dmabuf.cc
@@ -1,4 +1,4 @@
---- ui/gfx/linux/client_native_pixmap_dmabuf.cc.orig	2021-01-07 00:37:29 UTC
+--- ui/gfx/linux/client_native_pixmap_dmabuf.cc.orig	2021-04-14 01:09:39 UTC
 +++ ui/gfx/linux/client_native_pixmap_dmabuf.cc
 @@ -5,7 +5,9 @@
  #include "ui/gfx/linux/client_native_pixmap_dmabuf.h"
@@ -10,7 +10,7 @@
  #include <stddef.h>
  #include <sys/ioctl.h>
  #include <sys/mman.h>
-@@ -27,11 +29,7 @@
+@@ -28,11 +30,7 @@
  #include "ui/gfx/buffer_format_util.h"
  #include "ui/gfx/switches.h"
  
diff --git a/devel/electron11/files/patch-ui_gfx_mojom_buffer__types__mojom__traits.cc b/devel/electron12/files/patch-ui_gfx_mojom_buffer__types__mojom__traits.cc
similarity index 87%
rename from devel/electron11/files/patch-ui_gfx_mojom_buffer__types__mojom__traits.cc
rename to devel/electron12/files/patch-ui_gfx_mojom_buffer__types__mojom__traits.cc
index d2d3fd6ce23abed4aac4cc0b8d8aa7ad3e16ba40..93e2a0e41b19ae45c335d748872d36f8ab3f286e 100644
--- a/devel/electron11/files/patch-ui_gfx_mojom_buffer__types__mojom__traits.cc
+++ b/devel/electron12/files/patch-ui_gfx_mojom_buffer__types__mojom__traits.cc
@@ -1,4 +1,4 @@
---- ui/gfx/mojom/buffer_types_mojom_traits.cc.orig	2021-01-07 00:37:29 UTC
+--- ui/gfx/mojom/buffer_types_mojom_traits.cc.orig	2021-04-14 01:09:39 UTC
 +++ ui/gfx/mojom/buffer_types_mojom_traits.cc
 @@ -33,7 +33,7 @@ gfx::mojom::GpuMemoryBufferPlatformHandlePtr StructTra
        return gfx::mojom::GpuMemoryBufferPlatformHandle::NewSharedMemoryHandle(
@@ -9,7 +9,7 @@
        return gfx::mojom::GpuMemoryBufferPlatformHandle::NewNativePixmapHandle(
            std::move(handle.native_pixmap_handle));
  #else
-@@ -109,7 +109,7 @@ bool StructTraits<gfx::mojom::GpuMemoryBufferHandleDat
+@@ -112,7 +112,7 @@ bool StructTraits<gfx::mojom::GpuMemoryBufferHandleDat
        out->type = gfx::SHARED_MEMORY_BUFFER;
        out->region = std::move(platform_handle->get_shared_memory_handle());
        return true;
diff --git a/devel/electron11/files/patch-ui_gfx_mojom_native__handle__types__mojom__traits.cc b/devel/electron12/files/patch-ui_gfx_mojom_native__handle__types__mojom__traits.cc
similarity index 100%
rename from devel/electron11/files/patch-ui_gfx_mojom_native__handle__types__mojom__traits.cc
rename to devel/electron12/files/patch-ui_gfx_mojom_native__handle__types__mojom__traits.cc
diff --git a/devel/electron11/files/patch-ui_gfx_mojom_native__handle__types__mojom__traits.h b/devel/electron12/files/patch-ui_gfx_mojom_native__handle__types__mojom__traits.h
similarity index 100%
rename from devel/electron11/files/patch-ui_gfx_mojom_native__handle__types__mojom__traits.h
rename to devel/electron12/files/patch-ui_gfx_mojom_native__handle__types__mojom__traits.h
diff --git a/devel/electron11/files/patch-ui_gfx_native__pixmap__handle.cc b/devel/electron12/files/patch-ui_gfx_native__pixmap__handle.cc
similarity index 100%
rename from devel/electron11/files/patch-ui_gfx_native__pixmap__handle.cc
rename to devel/electron12/files/patch-ui_gfx_native__pixmap__handle.cc
diff --git a/devel/electron11/files/patch-ui_gfx_native__pixmap__handle.h b/devel/electron12/files/patch-ui_gfx_native__pixmap__handle.h
similarity index 100%
rename from devel/electron11/files/patch-ui_gfx_native__pixmap__handle.h
rename to devel/electron12/files/patch-ui_gfx_native__pixmap__handle.h
diff --git a/devel/electron12/files/patch-ui_gfx_native__widget__types.h b/devel/electron12/files/patch-ui_gfx_native__widget__types.h
new file mode 100644
index 0000000000000000000000000000000000000000..007c96466ba8c27155cb72a88a008b15da75484e
--- /dev/null
+++ b/devel/electron12/files/patch-ui_gfx_native__widget__types.h
@@ -0,0 +1,20 @@
+--- ui/gfx/native_widget_types.h.orig	2021-04-14 01:09:39 UTC
++++ ui/gfx/native_widget_types.h
+@@ -106,7 +106,7 @@ class SkBitmap;
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ extern "C" {
+ struct _AtkObject;
+ typedef struct _AtkObject AtkObject;
+@@ -209,7 +209,7 @@ typedef NSFont* NativeFont;
+ typedef id NativeViewAccessible;
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#elif defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+ // Linux doesn't have a native font type.
+ typedef AtkObject* NativeViewAccessible;
+ #else
diff --git a/devel/electron11/files/patch-ui_gfx_render__text.cc b/devel/electron12/files/patch-ui_gfx_render__text.cc
similarity index 93%
rename from devel/electron11/files/patch-ui_gfx_render__text.cc
rename to devel/electron12/files/patch-ui_gfx_render__text.cc
index 4968b5b46d253bff78b4369f16aa777300aea465..07d8e7454fdefdc19f27a45163e32181f60a77ff 100644
--- a/devel/electron11/files/patch-ui_gfx_render__text.cc
+++ b/devel/electron12/files/patch-ui_gfx_render__text.cc
@@ -1,6 +1,6 @@
---- ui/gfx/render_text.cc.orig	2021-01-07 00:37:29 UTC
+--- ui/gfx/render_text.cc.orig	2021-04-14 01:09:39 UTC
 +++ ui/gfx/render_text.cc
-@@ -1191,32 +1191,33 @@ void RenderText::SetDisplayOffset(int horizontal_offse
+@@ -1193,32 +1193,33 @@ void RenderText::SetDisplayOffset(int horizontal_offse
    const int extra_content = GetContentWidth() - display_rect_.width();
    const int cursor_width = cursor_enabled_ ? 1 : 0;
  
diff --git a/devel/electron11/files/patch-ui_gl_BUILD.gn b/devel/electron12/files/patch-ui_gl_BUILD.gn
similarity index 79%
rename from devel/electron11/files/patch-ui_gl_BUILD.gn
rename to devel/electron12/files/patch-ui_gl_BUILD.gn
index f5147e83cb9f97ab5a8d0ff5bd6caf5bd5d2beaf..56fcf9ed61370c0b43e7ca096a99402789792cad 100644
--- a/devel/electron11/files/patch-ui_gl_BUILD.gn
+++ b/devel/electron12/files/patch-ui_gl_BUILD.gn
@@ -1,6 +1,6 @@
---- ui/gl/BUILD.gn.orig	2021-01-07 00:37:29 UTC
+--- ui/gl/BUILD.gn.orig	2021-04-14 01:09:39 UTC
 +++ ui/gl/BUILD.gn
-@@ -225,7 +225,7 @@ component("gl") {
+@@ -223,7 +223,7 @@ component("gl") {
        ]
      }
  
diff --git a/devel/electron11/files/patch-ui_gl_generate__bindings.py b/devel/electron12/files/patch-ui_gl_generate__bindings.py
similarity index 80%
rename from devel/electron11/files/patch-ui_gl_generate__bindings.py
rename to devel/electron12/files/patch-ui_gl_generate__bindings.py
index 751784fe18120fe7a4565b6e9ffa568ea176342f..df3d73b5934e9429be00b93ea7ad511698cc7cef 100644
--- a/devel/electron11/files/patch-ui_gl_generate__bindings.py
+++ b/devel/electron12/files/patch-ui_gl_generate__bindings.py
@@ -1,6 +1,6 @@
---- ui/gl/generate_bindings.py.orig	2021-01-07 00:37:29 UTC
+--- ui/gl/generate_bindings.py.orig	2021-04-14 01:09:39 UTC
 +++ ui/gl/generate_bindings.py
-@@ -2836,6 +2836,9 @@ GLX_FUNCTIONS = [
+@@ -2840,6 +2840,9 @@ GLX_FUNCTIONS = [
    'arguments':
        'Display* dpy, GLXDrawable drawable, int32_t* numerator, '
        'int32_t* denominator' },
diff --git a/devel/electron11/files/patch-ui_gl_gl__bindings__api__autogen__glx.h b/devel/electron12/files/patch-ui_gl_gl__bindings__api__autogen__glx.h
similarity index 100%
rename from devel/electron11/files/patch-ui_gl_gl__bindings__api__autogen__glx.h
rename to devel/electron12/files/patch-ui_gl_gl__bindings__api__autogen__glx.h
diff --git a/devel/electron11/files/patch-ui_gl_gl__bindings__autogen__glx.cc b/devel/electron12/files/patch-ui_gl_gl__bindings__autogen__glx.cc
similarity index 100%
rename from devel/electron11/files/patch-ui_gl_gl__bindings__autogen__glx.cc
rename to devel/electron12/files/patch-ui_gl_gl__bindings__autogen__glx.cc
diff --git a/devel/electron11/files/patch-ui_gl_gl__bindings__autogen__glx.h b/devel/electron12/files/patch-ui_gl_gl__bindings__autogen__glx.h
similarity index 100%
rename from devel/electron11/files/patch-ui_gl_gl__bindings__autogen__glx.h
rename to devel/electron12/files/patch-ui_gl_gl__bindings__autogen__glx.h
diff --git a/devel/electron12/files/patch-ui_gl_gl__features.cc b/devel/electron12/files/patch-ui_gl_gl__features.cc
new file mode 100644
index 0000000000000000000000000000000000000000..b761085e91b85977b843e2acde520add854b3d3f
--- /dev/null
+++ b/devel/electron12/files/patch-ui_gl_gl__features.cc
@@ -0,0 +1,13 @@
+--- ui/gl/gl_features.cc.orig	2021-04-14 01:09:39 UTC
++++ ui/gl/gl_features.cc
+@@ -23,8 +23,8 @@ const base::Feature kGpuVsync{"GpuVsync", base::FEATUR
+ // Launched on Windows, still experimental on other platforms.
+ const base::Feature kDefaultPassthroughCommandDecoder{
+   "DefaultPassthroughCommandDecoder",
+-#if defined(OS_WIN) ||                                       \
+-    ((defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) && \
++#if defined(OS_WIN) ||                                                          \
++    ((defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)) && \
+      !defined(CHROMECAST_BUILD))
+       base::FEATURE_ENABLED_BY_DEFAULT
+ #else
diff --git a/devel/electron11/files/patch-ui_gl_gl__fence.cc b/devel/electron12/files/patch-ui_gl_gl__fence.cc
similarity index 100%
rename from devel/electron11/files/patch-ui_gl_gl__fence.cc
rename to devel/electron12/files/patch-ui_gl_gl__fence.cc
diff --git a/devel/electron11/files/patch-ui_gl_sync__control__vsync__provider.cc b/devel/electron12/files/patch-ui_gl_sync__control__vsync__provider.cc
similarity index 100%
rename from devel/electron11/files/patch-ui_gl_sync__control__vsync__provider.cc
rename to devel/electron12/files/patch-ui_gl_sync__control__vsync__provider.cc
diff --git a/devel/electron11/files/patch-ui_gl_sync__control__vsync__provider.h b/devel/electron12/files/patch-ui_gl_sync__control__vsync__provider.h
similarity index 100%
rename from devel/electron11/files/patch-ui_gl_sync__control__vsync__provider.h
rename to devel/electron12/files/patch-ui_gl_sync__control__vsync__provider.h
diff --git a/devel/electron11/files/patch-ui_gtk_printing_print__dialog__gtk.cc b/devel/electron12/files/patch-ui_gtk_printing_print__dialog__gtk.cc
similarity index 100%
rename from devel/electron11/files/patch-ui_gtk_printing_print__dialog__gtk.cc
rename to devel/electron12/files/patch-ui_gtk_printing_print__dialog__gtk.cc
diff --git a/devel/electron12/files/patch-ui_message__center_views_message__popup__view.cc b/devel/electron12/files/patch-ui_message__center_views_message__popup__view.cc
new file mode 100644
index 0000000000000000000000000000000000000000..24a10e127fbdebd5f6074fb665abb4acbbcd4b5f
--- /dev/null
+++ b/devel/electron12/files/patch-ui_message__center_views_message__popup__view.cc
@@ -0,0 +1,11 @@
+--- ui/message_center/views/message_popup_view.cc.orig	2021-04-14 01:09:40 UTC
++++ ui/message_center/views/message_popup_view.cc
+@@ -114,7 +114,7 @@ void MessagePopupView::Show() {
+   params.z_order = ui::ZOrderLevel::kFloatingWindow;
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   // Make the widget explicitly activatable as TYPE_POPUP is not activatable by
+   // default but we need focus for the inline reply textarea.
+   params.activatable = views::Widget::InitParams::ACTIVATABLE_YES;
diff --git a/devel/electron12/files/patch-ui_native__theme_native__theme.h b/devel/electron12/files/patch-ui_native__theme_native__theme.h
new file mode 100644
index 0000000000000000000000000000000000000000..581bedbf4769793e8a4a0a77fbd991fc0671e9ad
--- /dev/null
+++ b/devel/electron12/files/patch-ui_native__theme_native__theme.h
@@ -0,0 +1,11 @@
+--- ui/native_theme/native_theme.h.orig	2021-04-22 07:51:50 UTC
++++ ui/native_theme/native_theme.h
+@@ -54,7 +54,7 @@ class NATIVE_THEME_EXPORT NativeTheme {
+     kCheckbox,
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+     kFrameTopArea,
+ #endif
+     kInnerSpinButton,
diff --git a/devel/electron12/files/patch-ui_native__theme_native__theme__base.cc b/devel/electron12/files/patch-ui_native__theme_native__theme__base.cc
new file mode 100644
index 0000000000000000000000000000000000000000..44b96d3351ef6a086454f1a1c5702a65a702fa6b
--- /dev/null
+++ b/devel/electron12/files/patch-ui_native__theme_native__theme__base.cc
@@ -0,0 +1,11 @@
+--- ui/native_theme/native_theme_base.cc.orig	2021-04-14 01:09:40 UTC
++++ ui/native_theme/native_theme_base.cc
+@@ -258,7 +258,7 @@ void NativeThemeBase::Paint(cc::PaintCanvas* canvas,
+       break;
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+     case kFrameTopArea:
+       PaintFrameTopArea(canvas, state, rect, extra.frame_top_area,
+                         color_scheme);
diff --git a/devel/electron11/files/patch-ui_platform__window_platform__window__init__properties.h b/devel/electron12/files/patch-ui_platform__window_platform__window__init__properties.h
similarity index 88%
rename from devel/electron11/files/patch-ui_platform__window_platform__window__init__properties.h
rename to devel/electron12/files/patch-ui_platform__window_platform__window__init__properties.h
index efee8d87d308d918c78502ebab8922e6e19ef408..e48438d11ae1086d24196b82e9c9759d88bebc02 100644
--- a/devel/electron11/files/patch-ui_platform__window_platform__window__init__properties.h
+++ b/devel/electron12/files/patch-ui_platform__window_platform__window__init__properties.h
@@ -1,4 +1,4 @@
---- ui/platform_window/platform_window_init_properties.h.orig	2021-01-07 00:37:29 UTC
+--- ui/platform_window/platform_window_init_properties.h.orig	2021-04-14 01:09:40 UTC
 +++ ui/platform_window/platform_window_init_properties.h
 @@ -41,7 +41,7 @@ enum class PlatformWindowOpacity {
  
@@ -9,7 +9,7 @@
  class X11ExtensionDelegate;
  #endif
  
-@@ -82,7 +82,7 @@ struct COMPONENT_EXPORT(PLATFORM_WINDOW) PlatformWindo
+@@ -83,7 +83,7 @@ struct COMPONENT_EXPORT(PLATFORM_WINDOW) PlatformWindo
  
    WorkspaceExtensionDelegate* workspace_extension_delegate = nullptr;
  
diff --git a/devel/electron11/files/patch-ui_strings_app__locale__settings.grd b/devel/electron12/files/patch-ui_strings_app__locale__settings.grd
similarity index 58%
rename from devel/electron11/files/patch-ui_strings_app__locale__settings.grd
rename to devel/electron12/files/patch-ui_strings_app__locale__settings.grd
index ce70e21c5747c0363e3878cd101291a7e751651b..39265ceb2983316fdc5103ecfa597f765e8498a3 100644
--- a/devel/electron11/files/patch-ui_strings_app__locale__settings.grd
+++ b/devel/electron12/files/patch-ui_strings_app__locale__settings.grd
@@ -1,11 +1,11 @@
---- ui/strings/app_locale_settings.grd.orig	2021-01-07 00:37:29 UTC
+--- ui/strings/app_locale_settings.grd.orig	2021-04-14 01:09:40 UTC
 +++ ui/strings/app_locale_settings.grd
 @@ -217,7 +217,7 @@
            75%
          </message>
        </if>
--      <if expr="(is_linux or is_android or is_bsd) and not chromeos">
-+      <if expr="is_posix and not chromeos">
+-      <if expr="(is_linux or is_android or is_bsd) and not (chromeos or lacros)">
++      <if expr="(is_posix or is_android or is_bsd) and not (chromeos or lacros)">
          <!-- The font used in Web UI (e.g. History). Note that these are only
               backups. We try to use the system font if possible. -->
          <message name="IDS_WEB_FONT_FAMILY" use_name_for_id="true">
diff --git a/devel/electron12/files/patch-ui_views_controls_label.cc b/devel/electron12/files/patch-ui_views_controls_label.cc
new file mode 100644
index 0000000000000000000000000000000000000000..5a1e9b7a98be7f864dfc4c5b8683fd8876188588
--- /dev/null
+++ b/devel/electron12/files/patch-ui_views_controls_label.cc
@@ -0,0 +1,20 @@
+--- ui/views/controls/label.cc.orig	2021-04-14 01:09:40 UTC
++++ ui/views/controls/label.cc
+@@ -806,7 +806,7 @@ bool Label::OnMousePressed(const ui::MouseEvent& event
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   if (event.IsOnlyMiddleMouseButton() && GetFocusManager() && !had_focus)
+     GetFocusManager()->SetFocusedView(this);
+ #endif
+@@ -995,7 +995,7 @@ bool Label::PasteSelectionClipboard() {
+ void Label::UpdateSelectionClipboard() {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   if (!GetObscured()) {
+     ui::ScopedClipboardWriter(ui::ClipboardBuffer::kSelection)
+         .WriteText(GetSelectedText());
diff --git a/devel/electron11/files/patch-ui_views_controls_textfield_textfield.cc b/devel/electron12/files/patch-ui_views_controls_textfield_textfield.cc
similarity index 53%
rename from devel/electron11/files/patch-ui_views_controls_textfield_textfield.cc
rename to devel/electron12/files/patch-ui_views_controls_textfield_textfield.cc
index 2c2b82f16302d734f1b0f5792398863d680023a9..57d2e039f48977c7829ddaf16d39b599efee2dcc 100644
--- a/devel/electron11/files/patch-ui_views_controls_textfield_textfield.cc
+++ b/devel/electron12/files/patch-ui_views_controls_textfield_textfield.cc
@@ -1,15 +1,15 @@
---- ui/views/controls/textfield/textfield.cc.orig	2021-01-07 00:37:29 UTC
+--- ui/views/controls/textfield/textfield.cc.orig	2021-04-14 01:09:40 UTC
 +++ ui/views/controls/textfield/textfield.cc
-@@ -65,7 +65,7 @@
- #include "base/win/win_util.h"
- #endif
+@@ -71,7 +71,7 @@
  
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
  #include "ui/base/ime/linux/text_edit_command_auralinux.h"
  #include "ui/base/ime/linux/text_edit_key_bindings_delegate_auralinux.h"
  #endif
-@@ -192,14 +192,14 @@ ui::TextEditCommand GetCommandForKeyEvent(const ui::Ke
+@@ -239,14 +239,14 @@ ui::TextEditCommand GetCommandForKeyEvent(const ui::Ke
  #endif
          return ui::TextEditCommand::DELETE_BACKWARD;
        }
@@ -26,7 +26,7 @@
        // Only erase by line break on Linux and ChromeOS.
        if (shift && control)
          return ui::TextEditCommand::DELETE_TO_END_OF_LINE;
-@@ -267,7 +267,7 @@ bool IsControlKeyModifier(int flags) {
+@@ -320,7 +320,7 @@ bool IsControlKeyModifier(int flags) {
  // Control-modified key combination, but we cannot extend it to other platforms
  // as Control has different meanings and behaviors.
  // https://crrev.com/2580483002/#msg46
@@ -35,39 +35,39 @@
    return flags & ui::EF_CONTROL_DOWN;
  #else
    return false;
-@@ -758,7 +758,7 @@ bool Textfield::OnMousePressed(const ui::MouseEvent& e
- #endif
-   }
+@@ -818,7 +818,7 @@ bool Textfield::OnMousePressed(const ui::MouseEvent& e
  
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
    if (!handled && !had_focus && event.IsOnlyMiddleMouseButton())
      RequestFocusWithPointer(ui::EventPointerType::kMouse);
  #endif
-@@ -805,7 +805,7 @@ bool Textfield::OnKeyPressed(const ui::KeyEvent& event
-   if (!textfield)
-     return handled;
+@@ -867,7 +867,7 @@ bool Textfield::OnKeyPressed(const ui::KeyEvent& event
  
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
    ui::TextEditKeyBindingsDelegateAuraLinux* delegate =
        ui::GetTextEditKeyBindingsDelegate();
    std::vector<ui::TextEditCommandAuraLinux> commands;
-@@ -957,7 +957,7 @@ void Textfield::AboutToRequestFocusFromTabTraversal(bo
- }
- 
+@@ -1023,7 +1023,7 @@ void Textfield::AboutToRequestFocusFromTabTraversal(bo
  bool Textfield::SkipDefaultKeyEventProcessing(const ui::KeyEvent& event) {
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
    // Skip any accelerator handling that conflicts with custom keybindings.
    ui::TextEditKeyBindingsDelegateAuraLinux* delegate =
        ui::GetTextEditKeyBindingsDelegate();
-@@ -2241,7 +2241,7 @@ bool Textfield::PasteSelectionClipboard() {
- }
- 
+@@ -2343,7 +2343,7 @@ bool Textfield::PasteSelectionClipboard() {
  void Textfield::UpdateSelectionClipboard() {
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
    if (text_input_type_ != ui::TEXT_INPUT_TYPE_PASSWORD) {
      ui::ScopedClipboardWriter(ui::ClipboardBuffer::kSelection)
          .WriteText(GetSelectedText());
diff --git a/devel/electron12/files/patch-ui_views_corewm_tooltip__aura.cc b/devel/electron12/files/patch-ui_views_corewm_tooltip__aura.cc
new file mode 100644
index 0000000000000000000000000000000000000000..2d6c9795821c7bb5b1de8d78eb1973ce2cae95c2
--- /dev/null
+++ b/devel/electron12/files/patch-ui_views_corewm_tooltip__aura.cc
@@ -0,0 +1,11 @@
+--- ui/views/corewm/tooltip_aura.cc.orig	2021-04-14 01:09:40 UTC
++++ ui/views/corewm/tooltip_aura.cc
+@@ -49,7 +49,7 @@ constexpr int kVerticalPaddingBottom = 5;
+ bool CanUseTranslucentTooltipWidget() {
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_WIN)
++#if (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || defined(OS_WIN) || defined(OS_BSD)
+   return false;
+ #else
+   return true;
diff --git a/devel/electron12/files/patch-ui_views_examples_widget__example.cc b/devel/electron12/files/patch-ui_views_examples_widget__example.cc
new file mode 100644
index 0000000000000000000000000000000000000000..3bd768d27c0e8c9c596dbf00da4bb67dd17a6fec
--- /dev/null
+++ b/devel/electron12/files/patch-ui_views_examples_widget__example.cc
@@ -0,0 +1,11 @@
+--- ui/views/examples/widget_example.cc.orig	2021-04-14 01:09:40 UTC
++++ ui/views/examples/widget_example.cc
+@@ -50,7 +50,7 @@ void WidgetExample::CreateExampleView(View* container)
+   modal_button->SetCallback(
+       base::BindRepeating(&WidgetExample::CreateDialogWidget,
+                           base::Unretained(this), modal_button, true));
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   // Windows does not support TYPE_CONTROL top-level widgets.
+   LabelButton* control_button = BuildButton(
+       container, GetStringUTF16(IDS_WIDGET_CHILD_WIDGET_BUTTON_LABEL));
diff --git a/devel/electron12/files/patch-ui_views_focus_focus__manager.cc b/devel/electron12/files/patch-ui_views_focus_focus__manager.cc
new file mode 100644
index 0000000000000000000000000000000000000000..7d4b7d64c5169da8f3cbfe06eda2cdfd85af269b
--- /dev/null
+++ b/devel/electron12/files/patch-ui_views_focus_focus__manager.cc
@@ -0,0 +1,20 @@
+--- ui/views/focus/focus_manager.cc.orig	2021-04-14 01:09:40 UTC
++++ ui/views/focus/focus_manager.cc
+@@ -624,7 +624,7 @@ bool FocusManager::RedirectAcceleratorToBubbleAnchorWi
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   // Processing an accelerator can delete things. Because we
+   // need these objects afterwards on Linux, save widget_ as weak pointer and
+   // save the close_on_deactivate property value of widget_delegate in a
+@@ -641,7 +641,7 @@ bool FocusManager::RedirectAcceleratorToBubbleAnchorWi
+ 
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   // Need to manually close the bubble widget on Linux. On Linux when the
+   // bubble is shown, the main widget remains active. Because of that when
+   // focus is set to the main widget to process accelerator, the main widget
diff --git a/devel/electron12/files/patch-ui_views_selection__controller.cc b/devel/electron12/files/patch-ui_views_selection__controller.cc
new file mode 100644
index 0000000000000000000000000000000000000000..ba81b60448732e1a736207c4e77c0550ce395b61
--- /dev/null
+++ b/devel/electron12/files/patch-ui_views_selection__controller.cc
@@ -0,0 +1,11 @@
+--- ui/views/selection_controller.cc.orig	2021-04-14 01:09:40 UTC
++++ ui/views/selection_controller.cc
+@@ -26,7 +26,7 @@ SelectionController::SelectionController(SelectionCont
+ // On Linux, update the selection clipboard on a text selection.
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   set_handles_selection_clipboard(true);
+ #endif
+ 
diff --git a/devel/electron12/files/patch-ui_views_style_platform__style.cc b/devel/electron12/files/patch-ui_views_style_platform__style.cc
new file mode 100644
index 0000000000000000000000000000000000000000..b5c571dbee1a76c26b7486c16353d3e617c1cc66
--- /dev/null
+++ b/devel/electron12/files/patch-ui_views_style_platform__style.cc
@@ -0,0 +1,20 @@
+--- ui/views/style/platform_style.cc.orig	2021-04-14 01:09:40 UTC
++++ ui/views/style/platform_style.cc
+@@ -58,7 +58,7 @@ const View::FocusBehavior PlatformStyle::kDefaultFocus
+ const bool PlatformStyle::kAdjustBubbleIfOffscreen =
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+     false;
+ #else
+     true;
+@@ -88,7 +88,7 @@ gfx::Range PlatformStyle::RangeToDeleteBackwards(const
+ #endif  // OS_APPLE
+ 
+ #if !BUILDFLAG(ENABLE_DESKTOP_AURA) || \
+-    (!defined(OS_LINUX) && !defined(OS_CHROMEOS))
++    (!defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_BSD))
+ // static
+ std::unique_ptr<Border> PlatformStyle::CreateThemedLabelButtonBorder(
+     LabelButton* button) {
diff --git a/devel/electron12/files/patch-ui_views_views__delegate.cc b/devel/electron12/files/patch-ui_views_views__delegate.cc
new file mode 100644
index 0000000000000000000000000000000000000000..0b2b5d0cc80ca5ebedc61d23af44634f6b777234
--- /dev/null
+++ b/devel/electron12/files/patch-ui_views_views__delegate.cc
@@ -0,0 +1,11 @@
+--- ui/views/views_delegate.cc.orig	2021-04-14 01:09:40 UTC
++++ ui/views/views_delegate.cc
+@@ -90,7 +90,7 @@ bool ViewsDelegate::IsWindowInMetro(gfx::NativeWindow 
+   return false;
+ }
+ #elif BUILDFLAG(ENABLE_DESKTOP_AURA) && \
+-    (defined(OS_LINUX) || defined(OS_CHROMEOS))
++    (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD))
+ gfx::ImageSkia* ViewsDelegate::GetDefaultWindowIcon() const {
+   return nullptr;
+ }
diff --git a/devel/electron12/files/patch-ui_views_views__delegate.h b/devel/electron12/files/patch-ui_views_views__delegate.h
new file mode 100644
index 0000000000000000000000000000000000000000..fcdf6d5db615a416a85c0e70829eb8804ef7c893
--- /dev/null
+++ b/devel/electron12/files/patch-ui_views_views__delegate.h
@@ -0,0 +1,11 @@
+--- ui/views/views_delegate.h.orig	2021-04-14 01:09:40 UTC
++++ ui/views/views_delegate.h
+@@ -138,7 +138,7 @@ class VIEWS_EXPORT ViewsDelegate {
+   // environment.
+   virtual bool IsWindowInMetro(gfx::NativeWindow window) const;
+ #elif BUILDFLAG(ENABLE_DESKTOP_AURA) && \
+-    (defined(OS_LINUX) || defined(OS_CHROMEOS))
++    (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD))
+   virtual gfx::ImageSkia* GetDefaultWindowIcon() const;
+ #endif
+ 
diff --git a/devel/electron11/files/patch-ui_views_widget_desktop__aura_desktop__screen__ozone.cc b/devel/electron12/files/patch-ui_views_widget_desktop__aura_desktop__screen__ozone.cc
similarity index 100%
rename from devel/electron11/files/patch-ui_views_widget_desktop__aura_desktop__screen__ozone.cc
rename to devel/electron12/files/patch-ui_views_widget_desktop__aura_desktop__screen__ozone.cc
diff --git a/devel/electron11/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.cc b/devel/electron12/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.cc
similarity index 83%
rename from devel/electron11/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.cc
rename to devel/electron12/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.cc
index 0e70b9829b3204119b026c506a5e127fe09d5eb5..ea91ee17c0c41ea2710c6e2de3d98982e0664c15 100644
--- a/devel/electron11/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.cc
+++ b/devel/electron12/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.cc
@@ -1,6 +1,6 @@
---- ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc.orig	2021-01-07 00:37:29 UTC
+--- ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc.orig	2021-04-14 01:09:40 UTC
 +++ ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc
-@@ -791,7 +791,7 @@ void DesktopWindowTreeHostPlatform::AddAdditionalInitP
+@@ -818,7 +818,7 @@ void DesktopWindowTreeHostPlatform::AddAdditionalInitP
  // DesktopWindowTreeHost:
  
  // Linux subclasses this host and adds some Linux specific bits.
diff --git a/devel/electron11/files/patch-ui_views_widget_native__widget__aura.cc b/devel/electron12/files/patch-ui_views_widget_native__widget__aura.cc
similarity index 85%
rename from devel/electron11/files/patch-ui_views_widget_native__widget__aura.cc
rename to devel/electron12/files/patch-ui_views_widget_native__widget__aura.cc
index 2683958d54eb6d528f19b6913020aa5f39a9c74c..4d5f19c3ac3280a57227b2e977a87e3afb54e2ac 100644
--- a/devel/electron11/files/patch-ui_views_widget_native__widget__aura.cc
+++ b/devel/electron12/files/patch-ui_views_widget_native__widget__aura.cc
@@ -1,6 +1,6 @@
---- ui/views/widget/native_widget_aura.cc.orig	2021-01-07 00:37:29 UTC
+--- ui/views/widget/native_widget_aura.cc.orig	2021-04-14 01:09:40 UTC
 +++ ui/views/widget/native_widget_aura.cc
-@@ -65,7 +65,7 @@
+@@ -68,7 +68,7 @@
  #endif
  
  #if BUILDFLAG(ENABLE_DESKTOP_AURA) && \
@@ -9,7 +9,7 @@
  #include "ui/views/linux_ui/linux_ui.h"
  #include "ui/views/widget/desktop_aura/desktop_window_tree_host_linux.h"
  #endif
-@@ -1075,7 +1075,7 @@ void NativeWidgetAura::SetInitialFocus(ui::WindowShowS
+@@ -1121,7 +1121,7 @@ void NativeWidgetAura::SetInitialFocus(ui::WindowShowS
  
  namespace {
  #if BUILDFLAG(ENABLE_DESKTOP_AURA) && \
@@ -18,7 +18,7 @@
  void CloseWindow(aura::Window* window) {
    if (window) {
      Widget* widget = Widget::GetWidgetForNativeView(window);
-@@ -1106,14 +1106,14 @@ void Widget::CloseAllSecondaryWidgets() {
+@@ -1152,14 +1152,14 @@ void Widget::CloseAllSecondaryWidgets() {
  #endif
  
  #if BUILDFLAG(ENABLE_DESKTOP_AURA) && \
diff --git a/devel/electron12/files/patch-ui_views_window_custom__frame__view.cc b/devel/electron12/files/patch-ui_views_window_custom__frame__view.cc
new file mode 100644
index 0000000000000000000000000000000000000000..de01d6d8d7bc847755c6cb2ab9b0ba43cfc38b06
--- /dev/null
+++ b/devel/electron12/files/patch-ui_views_window_custom__frame__view.cc
@@ -0,0 +1,11 @@
+--- ui/views/window/custom_frame_view.cc.orig	2021-04-14 01:09:40 UTC
++++ ui/views/window/custom_frame_view.cc
+@@ -259,7 +259,7 @@ int CustomFrameView::CaptionButtonY() const {
+   // drawn flush with the screen edge, they still obey Fitts' Law.
+ // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
+ // of lacros-chrome is complete.
+-#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
++#if defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || defined(OS_BSD)
+   return FrameBorderThickness();
+ #else
+   return frame_->IsMaximized() ? FrameBorderThickness() : kFrameShadowThickness;
diff --git a/devel/electron11/files/patch-ui_views_window_dialog__delegate.cc b/devel/electron12/files/patch-ui_views_window_dialog__delegate.cc
similarity index 75%
rename from devel/electron11/files/patch-ui_views_window_dialog__delegate.cc
rename to devel/electron12/files/patch-ui_views_window_dialog__delegate.cc
index 47bc6b78fef66349e550cb45e93c0f45fe3d0d76..b910db1f19179bd1dddef0983f52b8ca182db65a 100644
--- a/devel/electron11/files/patch-ui_views_window_dialog__delegate.cc
+++ b/devel/electron12/files/patch-ui_views_window_dialog__delegate.cc
@@ -1,6 +1,6 @@
---- ui/views/window/dialog_delegate.cc.orig	2021-01-07 00:37:29 UTC
+--- ui/views/window/dialog_delegate.cc.orig	2021-04-14 01:09:40 UTC
 +++ ui/views/window/dialog_delegate.cc
-@@ -71,7 +71,7 @@ Widget* DialogDelegate::CreateDialogWidget(
+@@ -72,7 +72,7 @@ Widget* DialogDelegate::CreateDialogWidget(
  
  // static
  bool DialogDelegate::CanSupportCustomFrame(gfx::NativeView parent) {
diff --git a/devel/electron11/files/patch-ui_views_window_frame__background.cc b/devel/electron12/files/patch-ui_views_window_frame__background.cc
similarity index 100%
rename from devel/electron11/files/patch-ui_views_window_frame__background.cc
rename to devel/electron12/files/patch-ui_views_window_frame__background.cc
diff --git a/devel/electron11/files/patch-ui_webui_resources_js_cr.js b/devel/electron12/files/patch-ui_webui_resources_js_cr.js
similarity index 72%
rename from devel/electron11/files/patch-ui_webui_resources_js_cr.js
rename to devel/electron12/files/patch-ui_webui_resources_js_cr.js
index 19df69ddc8b94498bf13a4779cc74c749aa775d0..187d7c5db2b36ad8e801609199cd7fd32af46826 100644
--- a/devel/electron11/files/patch-ui_webui_resources_js_cr.js
+++ b/devel/electron12/files/patch-ui_webui_resources_js_cr.js
@@ -1,6 +1,6 @@
---- ui/webui/resources/js/cr.js.orig	2021-01-07 00:37:29 UTC
+--- ui/webui/resources/js/cr.js.orig	2021-04-14 01:09:40 UTC
 +++ ui/webui/resources/js/cr.js
-@@ -430,6 +430,11 @@ var cr = cr || function(global) {
+@@ -450,6 +450,11 @@ var cr = cr || function(global) {
      get isMac() {
        return /Mac/.test(navigator.platform);
      },
diff --git a/devel/electron11/files/patch-v8_BUILD.gn b/devel/electron12/files/patch-v8_BUILD.gn
similarity index 77%
rename from devel/electron11/files/patch-v8_BUILD.gn
rename to devel/electron12/files/patch-v8_BUILD.gn
index 5afa9a8e43c8b07e307ea3c6cff94ef8cd1e1f9c..ee96f8cf6a3c96c6a82e4b9f0bb7416181b92210 100644
--- a/devel/electron11/files/patch-v8_BUILD.gn
+++ b/devel/electron12/files/patch-v8_BUILD.gn
@@ -1,6 +1,6 @@
---- v8/BUILD.gn.orig	2021-01-25 11:27:01 UTC
+--- v8/BUILD.gn.orig	2021-04-22 07:51:51 UTC
 +++ v8/BUILD.gn
-@@ -4072,9 +4072,15 @@ v8_component("v8_libbase") {
+@@ -4213,9 +4213,15 @@ v8_component("v8_libbase") {
      }
    }
  
@@ -17,7 +17,7 @@
        "src/base/platform/platform-linux.cc",
      ]
  
-@@ -4480,6 +4486,7 @@ if (current_toolchain == v8_generator_toolchain) {
+@@ -4671,6 +4677,7 @@ if (current_toolchain == v8_generator_toolchain) {
        "src/interpreter/bytecodes.cc",
        "src/interpreter/bytecodes.h",
      ]
diff --git a/devel/electron11/files/patch-v8_include_v8config.h b/devel/electron12/files/patch-v8_include_v8config.h
similarity index 81%
rename from devel/electron11/files/patch-v8_include_v8config.h
rename to devel/electron12/files/patch-v8_include_v8config.h
index 1fd9883ea30c7cdcfc5fb0678d13e3444f37cb34..771af78665d2b74c54d4aaac6f4371aa1c51d50e 100644
--- a/devel/electron11/files/patch-v8_include_v8config.h
+++ b/devel/electron12/files/patch-v8_include_v8config.h
@@ -1,8 +1,8 @@
---- v8/include/v8config.h.orig	2021-01-25 11:27:01 UTC
+--- v8/include/v8config.h.orig	2021-04-22 07:51:51 UTC
 +++ v8/include/v8config.h
-@@ -276,7 +276,18 @@
- # define V8_HAS_ATTRIBUTE_WARN_UNUSED_RESULT \
-     (__has_attribute(warn_unused_result))
+@@ -285,7 +285,18 @@
+ 
+ # define V8_HAS_CPP_ATTRIBUTE_NODISCARD (V8_HAS_CPP_ATTRIBUTE(nodiscard))
  
 +// Work around Clang bug present in 9.0.1, at least.
 +//
diff --git a/devel/electron11/files/patch-v8_src_api_api.cc b/devel/electron12/files/patch-v8_src_api_api.cc
similarity index 73%
rename from devel/electron11/files/patch-v8_src_api_api.cc
rename to devel/electron12/files/patch-v8_src_api_api.cc
index 1f041019aa124713248122f5adc0e1c884a0a42d..8ca28ce3c6b7cae66a6824cb13603ea3852ac370 100644
--- a/devel/electron11/files/patch-v8_src_api_api.cc
+++ b/devel/electron12/files/patch-v8_src_api_api.cc
@@ -1,6 +1,6 @@
---- v8/src/api/api.cc.orig	2021-01-25 11:27:01 UTC
+--- v8/src/api/api.cc.orig	2021-04-22 07:51:51 UTC
 +++ v8/src/api/api.cc
-@@ -5764,7 +5764,7 @@ bool v8::V8::Initialize(const int build_config) {
+@@ -5898,7 +5898,7 @@ bool v8::V8::Initialize(const int build_config) {
    return true;
  }
  
diff --git a/devel/electron11/files/patch-v8_src_base_cpu.cc b/devel/electron12/files/patch-v8_src_base_cpu.cc
similarity index 72%
rename from devel/electron11/files/patch-v8_src_base_cpu.cc
rename to devel/electron12/files/patch-v8_src_base_cpu.cc
index ba94b09731c28f31f2b1be806d097dcf046ce397..d87aff6cd9215c896fa6babdbfbebdc345bbf6b6 100644
--- a/devel/electron11/files/patch-v8_src_base_cpu.cc
+++ b/devel/electron12/files/patch-v8_src_base_cpu.cc
@@ -1,6 +1,6 @@
---- v8/src/base/cpu.cc.orig	2021-01-07 00:39:39 UTC
+--- v8/src/base/cpu.cc.orig	2021-04-14 01:15:35 UTC
 +++ v8/src/base/cpu.cc
-@@ -534,6 +534,7 @@ CPU::CPU()
+@@ -545,6 +545,7 @@ CPU::CPU()
  
  #if V8_OS_LINUX
  
@@ -8,7 +8,7 @@
    CPUInfo cpu_info;
  
    // Extract implementor from the "CPU implementer" field.
-@@ -567,6 +568,7 @@ CPU::CPU()
+@@ -578,6 +579,7 @@ CPU::CPU()
      }
      delete[] part;
    }
diff --git a/devel/electron11/files/patch-v8_src_base_platform_platform-freebsd.cc b/devel/electron12/files/patch-v8_src_base_platform_platform-freebsd.cc
similarity index 100%
rename from devel/electron11/files/patch-v8_src_base_platform_platform-freebsd.cc
rename to devel/electron12/files/patch-v8_src_base_platform_platform-freebsd.cc
diff --git a/devel/electron11/files/patch-v8_src_base_platform_platform-posix.cc b/devel/electron12/files/patch-v8_src_base_platform_platform-posix.cc
similarity index 78%
rename from devel/electron11/files/patch-v8_src_base_platform_platform-posix.cc
rename to devel/electron12/files/patch-v8_src_base_platform_platform-posix.cc
index 614f12f602a5756fc0f62538e4e8c731e99b7856..b381da8cc43c8103486a63a40c662a122f7b282b 100644
--- a/devel/electron11/files/patch-v8_src_base_platform_platform-posix.cc
+++ b/devel/electron12/files/patch-v8_src_base_platform_platform-posix.cc
@@ -1,6 +1,6 @@
---- v8/src/base/platform/platform-posix.cc.orig	2021-02-20 11:23:43 UTC
+--- v8/src/base/platform/platform-posix.cc.orig	2021-04-22 07:51:51 UTC
 +++ v8/src/base/platform/platform-posix.cc
-@@ -476,7 +476,7 @@ bool OS::DiscardSystemPages(void* address, size_t size
+@@ -486,7 +486,7 @@ bool OS::DiscardSystemPages(void* address, size_t size
  
  // static
  bool OS::HasLazyCommits() {
@@ -9,7 +9,7 @@
    return true;
  #else
    // TODO(bbudge) Return true for all POSIX platforms.
-@@ -607,6 +607,12 @@ int OS::GetCurrentThreadId() {
+@@ -617,6 +617,12 @@ int OS::GetCurrentThreadId() {
    return static_cast<int>(syscall(__NR_gettid));
  #elif V8_OS_ANDROID
    return static_cast<int>(gettid());
diff --git a/devel/electron12/files/patch-v8_src_d8_d8.cc b/devel/electron12/files/patch-v8_src_d8_d8.cc
new file mode 100644
index 0000000000000000000000000000000000000000..567397b74ef1d14c3d681d4ea9888a3b8d39f729
--- /dev/null
+++ b/devel/electron12/files/patch-v8_src_d8_d8.cc
@@ -0,0 +1,62 @@
+--- v8/src/d8/d8.cc.orig	2021-04-14 01:15:35 UTC
++++ v8/src/d8/d8.cc
+@@ -73,7 +73,7 @@
+ #include "unicode/locid.h"
+ #endif  // V8_INTL_SUPPORT
+ 
+-#ifdef V8_OS_LINUX
++#if defined(V8_OS_LINUX) || defined(V8_OS_FREEBSD)
+ #include <sys/mman.h>  // For MultiMappedAllocator.
+ #endif
+ 
+@@ -235,7 +235,7 @@ class MockArrayBufferAllocatiorWithLimit : public Mock
+   std::atomic<size_t> space_left_;
+ };
+ 
+-#ifdef V8_OS_LINUX
++#if defined(V8_OS_LINUX) || defined(V8_OS_FREEBSD)
+ 
+ // This is a mock allocator variant that provides a huge virtual allocation
+ // backed by a small real allocation that is repeatedly mapped. If you create an
+@@ -328,7 +328,7 @@ class MultiMappedAllocator : public ArrayBufferAllocat
+   base::Mutex regions_mutex_;
+ };
+ 
+-#endif  // V8_OS_LINUX
++#endif  // V8_OS_LINUX || V8_OS_FREEBSD
+ 
+ v8::Platform* g_default_platform;
+ std::unique_ptr<v8::Platform> g_platform;
+@@ -3689,7 +3689,7 @@ bool Shell::SetOptions(int argc, char* argv[]) {
+   options.mock_arraybuffer_allocator = i::FLAG_mock_arraybuffer_allocator;
+   options.mock_arraybuffer_allocator_limit =
+       i::FLAG_mock_arraybuffer_allocator_limit;
+-#if V8_OS_LINUX
++#if defined(V8_OS_LINUX) || defined(V8_OS_FREEBSD)
+   options.multi_mapped_mock_allocator = i::FLAG_multi_mapped_mock_allocator;
+ #endif
+ 
+@@ -4321,19 +4321,19 @@ int Shell::Main(int argc, char* argv[]) {
+       memory_limit >= options.mock_arraybuffer_allocator_limit
+           ? memory_limit
+           : std::numeric_limits<size_t>::max());
+-#if V8_OS_LINUX
++#if defined(V8_OS_LINUX) || defined(V8_OS_FREEBSD)
+   MultiMappedAllocator multi_mapped_mock_allocator;
+-#endif  // V8_OS_LINUX
++#endif  // V8_OS_LINUX || V8_OS_FREEBSD
+   if (options.mock_arraybuffer_allocator) {
+     if (memory_limit) {
+       Shell::array_buffer_allocator = &mock_arraybuffer_allocator_with_limit;
+     } else {
+       Shell::array_buffer_allocator = &mock_arraybuffer_allocator;
+     }
+-#if V8_OS_LINUX
++#if defined(V8_OS_LINUX) || defined(V8_OS_FREEBSD)
+   } else if (options.multi_mapped_mock_allocator) {
+     Shell::array_buffer_allocator = &multi_mapped_mock_allocator;
+-#endif  // V8_OS_LINUX
++#endif  // V8_OS_LINUX || V8_OS_FREEBSD
+   } else {
+     Shell::array_buffer_allocator = &shell_array_buffer_allocator;
+   }
diff --git a/devel/electron11/files/patch-weblayer_BUILD.gn b/devel/electron12/files/patch-weblayer_BUILD.gn
similarity index 71%
rename from devel/electron11/files/patch-weblayer_BUILD.gn
rename to devel/electron12/files/patch-weblayer_BUILD.gn
index 613caa6045f9ee1ce965b22de4c8c7a2ddda19ae..30b8223dd5aa6373ca16a93b538112dc2a9af300 100644
--- a/devel/electron11/files/patch-weblayer_BUILD.gn
+++ b/devel/electron12/files/patch-weblayer_BUILD.gn
@@ -1,6 +1,6 @@
---- weblayer/BUILD.gn.orig	2021-01-07 00:37:29 UTC
+--- weblayer/BUILD.gn.orig	2021-04-14 01:09:40 UTC
 +++ weblayer/BUILD.gn
-@@ -671,6 +671,14 @@ source_set("weblayer_lib_base") {
+@@ -706,6 +706,14 @@ source_set("weblayer_lib_base") {
      ]
    }
  
diff --git a/devel/electron12/files/patch-weblayer_app_content__main__delegate__impl.cc b/devel/electron12/files/patch-weblayer_app_content__main__delegate__impl.cc
new file mode 100644
index 0000000000000000000000000000000000000000..64ff1effc1456021049b2d9954a8b6ccaa107bc4
--- /dev/null
+++ b/devel/electron12/files/patch-weblayer_app_content__main__delegate__impl.cc
@@ -0,0 +1,11 @@
+--- weblayer/app/content_main_delegate_impl.cc.orig	2021-04-14 01:09:40 UTC
++++ weblayer/app/content_main_delegate_impl.cc
+@@ -218,7 +218,7 @@ bool ContentMainDelegateImpl::ShouldCreateFeatureList(
+ }
+ 
+ void ContentMainDelegateImpl::PreSandboxStartup() {
+-#if defined(ARCH_CPU_ARM_FAMILY) && (defined(OS_ANDROID) || defined(OS_LINUX))
++#if defined(ARCH_CPU_ARM_FAMILY) && (defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD))
+   // Create an instance of the CPU class to parse /proc/cpuinfo and cache
+   // cpu_brand info.
+   base::CPU cpu_info;
diff --git a/devel/electron12/files/patch-weblayer_browser_browser__main__parts__impl.cc b/devel/electron12/files/patch-weblayer_browser_browser__main__parts__impl.cc
new file mode 100644
index 0000000000000000000000000000000000000000..242cf4a6176064964b326bd696e5d0c8d2613452
--- /dev/null
+++ b/devel/electron12/files/patch-weblayer_browser_browser__main__parts__impl.cc
@@ -0,0 +1,20 @@
+--- weblayer/browser/browser_main_parts_impl.cc.orig	2021-04-14 01:09:40 UTC
++++ weblayer/browser/browser_main_parts_impl.cc
+@@ -69,7 +69,7 @@
+ #include "ui/base/ui_base_features.h"
+ #include "ui/events/devices/x11/touch_factory_x11.h"  // nogncheck
+ #endif
+-#if defined(USE_AURA) && defined(OS_LINUX)
++#if defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
+ #include "ui/base/ime/init/input_method_initializer.h"
+ #endif
+ 
+@@ -184,7 +184,7 @@ void BrowserMainPartsImpl::PreMainMessageLoopStart() {
+ int BrowserMainPartsImpl::PreEarlyInitialization() {
+   browser_process_ = std::make_unique<BrowserProcess>(std::move(local_state_));
+ 
+-#if defined(USE_AURA) && defined(OS_LINUX)
++#if defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
+   ui::InitializeInputMethodForTesting();
+ #endif
+ #if defined(OS_ANDROID)
diff --git a/devel/electron11/files/patch-weblayer_browser_content__browser__client__impl.cc b/devel/electron12/files/patch-weblayer_browser_content__browser__client__impl.cc
similarity index 53%
rename from devel/electron11/files/patch-weblayer_browser_content__browser__client__impl.cc
rename to devel/electron12/files/patch-weblayer_browser_content__browser__client__impl.cc
index d357efa414d6ae28362a38f1fa0db83d0091d4a4..7a4886f5c2ca147910fb7b4a97b43b03a71c5144 100644
--- a/devel/electron11/files/patch-weblayer_browser_content__browser__client__impl.cc
+++ b/devel/electron12/files/patch-weblayer_browser_content__browser__client__impl.cc
@@ -1,20 +1,20 @@
---- weblayer/browser/content_browser_client_impl.cc.orig	2021-01-07 00:37:29 UTC
+--- weblayer/browser/content_browser_client_impl.cc.orig	2021-04-14 01:09:40 UTC
 +++ weblayer/browser/content_browser_client_impl.cc
 @@ -135,7 +135,7 @@
  #include "weblayer/browser/weblayer_factory_impl_android.h"
  #endif
  
--#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
-+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
  #include "content/public/common/content_descriptors.h"
  #endif
  
-@@ -382,7 +382,7 @@ void ContentBrowserClientImpl::ConfigureNetworkContext
+@@ -387,7 +387,7 @@ void ContentBrowserClientImpl::ConfigureNetworkContext
  
  void ContentBrowserClientImpl::OnNetworkServiceCreated(
      network::mojom::NetworkService* network_service) {
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
    network::mojom::CryptConfigPtr config = network::mojom::CryptConfig::New();
    content::GetNetworkService()->SetCryptConfig(std::move(config));
  #endif
diff --git a/devel/electron11/files/patch-weblayer_browser_system__network__context__manager.cc b/devel/electron12/files/patch-weblayer_browser_system__network__context__manager.cc
similarity index 62%
rename from devel/electron11/files/patch-weblayer_browser_system__network__context__manager.cc
rename to devel/electron12/files/patch-weblayer_browser_system__network__context__manager.cc
index c3f6841c307d7dda9226454ecb928611ad656670..d4e923b6ccf9939f6105cadff21b2faf98fc1c33 100644
--- a/devel/electron11/files/patch-weblayer_browser_system__network__context__manager.cc
+++ b/devel/electron12/files/patch-weblayer_browser_system__network__context__manager.cc
@@ -1,15 +1,15 @@
---- weblayer/browser/system_network_context_manager.cc.orig	2021-01-07 00:37:29 UTC
+--- weblayer/browser/system_network_context_manager.cc.orig	2021-04-14 01:09:40 UTC
 +++ weblayer/browser/system_network_context_manager.cc
 @@ -64,10 +64,10 @@ void SystemNetworkContextManager::ConfigureDefaultNetw
      network::mojom::NetworkContextParams* network_context_params,
      const std::string& user_agent) {
    network_context_params->user_agent = user_agent;
--#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN)
-+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
    // We're not configuring the cookie encryption on these platforms yet.
    network_context_params->enable_encrypted_cookies = false;
--#endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN)
-+#endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || defined(OS_WIN)
++#endif  // defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
  }
  
  SystemNetworkContextManager::SystemNetworkContextManager(
diff --git a/devel/electron11/files/patch-weblayer_common_weblayer__paths.cc b/devel/electron12/files/patch-weblayer_common_weblayer__paths.cc
similarity index 63%
rename from devel/electron11/files/patch-weblayer_common_weblayer__paths.cc
rename to devel/electron12/files/patch-weblayer_common_weblayer__paths.cc
index ebef2b085d54d38d1e1dbe4a47862217a673d8d4..e09a8bda4662cb52416dd72c11ad77111bee2fcb 100644
--- a/devel/electron11/files/patch-weblayer_common_weblayer__paths.cc
+++ b/devel/electron12/files/patch-weblayer_common_weblayer__paths.cc
@@ -1,11 +1,11 @@
---- weblayer/common/weblayer_paths.cc.orig	2021-01-07 00:37:29 UTC
+--- weblayer/common/weblayer_paths.cc.orig	2021-04-14 01:09:40 UTC
 +++ weblayer/common/weblayer_paths.cc
 @@ -17,7 +17,7 @@
  
  #if defined(OS_WIN)
  #include "base/base_paths_win.h"
--#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
  #include "base/nix/xdg_util.h"
  #endif
  
@@ -13,8 +13,8 @@
      return false;
    *result = result->AppendASCII("weblayer");
    return true;
--#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
    std::unique_ptr<base::Environment> env(base::Environment::Create());
    base::FilePath config_dir(base::nix::GetXDGDirectory(
        env.get(), base::nix::kXdgConfigHomeEnvVar, base::nix::kDotConfigDir));
diff --git a/devel/electron11/files/yarn.lock b/devel/electron12/files/yarn.lock
similarity index 96%
rename from devel/electron11/files/yarn.lock
rename to devel/electron12/files/yarn.lock
index 4d59a175c8f07ae24988b75ca71a9ba008a25228..13cd504f80650b400639496da38ce0b20ba91438 100644
--- a/devel/electron11/files/yarn.lock
+++ b/devel/electron12/files/yarn.lock
@@ -18,10 +18,10 @@
     esutils "^2.0.2"
     js-tokens "^4.0.0"
 
-"@electron/docs-parser@^0.10.0":
-  version "0.10.0"
-  resolved "https://registry.yarnpkg.com/@electron/docs-parser/-/docs-parser-0.10.0.tgz#cc399f3847c37a38af8c13c711dc57eb07e21994"
-  integrity sha512-dNUNsW3tC5VWyWDD6awxDsA0Wc91PVaG4KmSBnqQmXE7bNjnEFE1hf5TaH0KOmJq1KMyQ2rbp7rrrvqRoLKP1Q==
+"@electron/docs-parser@^0.10.1":
+  version "0.10.1"
+  resolved "https://registry.yarnpkg.com/@electron/docs-parser/-/docs-parser-0.10.1.tgz#aa5911c4ef2ec237d7a126111019ec45058088db"
+  integrity sha512-gDKGfc4ilPsKGCCyCCU20iJnHRV3QPYthOocgfAnzm5lOANssxLjl4KeN/DO8nTmKX/BmFsf+XGNa4Penq0L8A==
   dependencies:
     "@types/markdown-it" "^0.0.9"
     chai "^4.2.0"
@@ -33,16 +33,15 @@
     ora "^4.0.3"
     pretty-ms "^5.1.0"
 
-"@electron/typescript-definitions@^8.7.5":
-  version "8.7.5"
-  resolved "https://registry.yarnpkg.com/@electron/typescript-definitions/-/typescript-definitions-8.7.5.tgz#d141b10a7abbe2ef72e4083f6eb4d344c3b886c9"
-  integrity sha512-Q/0Iuas9PkDvLvejC9TYyVh+LdFF0GalHy6i2ZvMRS8MzYk3BLJI1ZsA2o4Z8DXk9G4b2ZVx8L3aNdDUvTjhGw==
+"@electron/typescript-definitions@^8.8.0":
+  version "8.8.0"
+  resolved "https://registry.yarnpkg.com/@electron/typescript-definitions/-/typescript-definitions-8.8.0.tgz#3af8989507af50b3b06b23833a45a5631ab31d3f"
+  integrity sha512-HXcLOzI6zNFTzye3R/aSuqBAiVkUWVnogHwRe4mEdS4nodOqKZQxaB5tzPU2qZ4mS5cpVykBW4s6qAItuptoCA==
   dependencies:
     "@types/node" "^11.13.7"
     chalk "^2.4.2"
     colors "^1.1.2"
     debug "^4.1.1"
-    electron-docs "^3.0.2"
     fs-extra "^7.0.1"
     lodash "^4.17.11"
     minimist "^1.2.0"
@@ -260,11 +259,6 @@
     "@types/chai" "*"
     "@types/chai-as-promised" "*"
 
-"@types/eslint-visitor-keys@^1.0.0":
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d"
-  integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==
-
 "@types/events@*":
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7"
@@ -327,6 +321,11 @@
   dependencies:
     "@types/node" "*"
 
+"@types/klaw@^3.0.1":
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/@types/klaw/-/klaw-3.0.1.tgz#29f90021c0234976aa4eb97efced9cb6db9fa8b3"
+  integrity sha512-acnF3n9mYOr1aFJKFyvfNX0am9EtPUsYPq22QUCGdJE+MVt6UyAN1jwo+PmOPqXD4K7ZS9MtxDEp/un0lxFccA==
+
 "@types/linkify-it@*":
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-2.1.0.tgz#ea3dd64c4805597311790b61e872cbd1ed2cd806"
@@ -354,6 +353,11 @@
   resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
   integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
 
+"@types/minimist@^1.2.0":
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.0.tgz#69a23a3ad29caf0097f06eda59b361ee2f0639f6"
+  integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=
+
 "@types/mocha@^7.0.2":
   version "7.0.2"
   resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-7.0.2.tgz#b17f16cf933597e10d6d78eae3251e692ce8b0ce"
@@ -374,10 +378,10 @@
   resolved "https://registry.yarnpkg.com/@types/node/-/node-11.13.22.tgz#91ee88ebfa25072433497f6f3150f84fa8c3a91b"
   integrity sha512-rOsaPRUGTOXbRBOKToy4cgZXY4Y+QSVhxcLwdEveozbk7yuudhWMpxxcaXqYizLMP3VY7OcWCFtx9lGFh5j5kg==
 
-"@types/node@^12.12.6":
-  version "12.12.30"
-  resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.30.tgz#3501e6f09b954de9c404671cefdbcc5d9d7c45f6"
-  integrity sha512-sz9MF/zk6qVr3pAnM0BSQvYIBK44tS75QC5N+VbWSE4DjCV/pJ+UzCW/F+vVnl7TkOPcuwQureKNtSSwjBTaMg==
+"@types/node@^14.6.2":
+  version "14.6.3"
+  resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.3.tgz#cc4f979548ca4d8e7b90bc0180052ab99ee64224"
+  integrity sha512-pC/hkcREG6YfDfui1FBmj8e20jFU5Exjw4NYDm8kEdrW+mOh0T1Zve8DWKnS7ZIZvgncrctcNCXF4Q2I+loyww==
 
 "@types/normalize-package-data@^2.4.0":
   version "2.4.0"
@@ -433,6 +437,21 @@
     "@types/node" "*"
     "@types/through" "*"
 
+"@types/stream-chain@*":
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/@types/stream-chain/-/stream-chain-2.0.0.tgz#aed7fc21ac3686bc721aebbbd971f5a857e567e4"
+  integrity sha512-O3IRJcZi4YddlS8jgasH87l+rdNmad9uPAMmMZCfRVhumbWMX6lkBWnIqr9kokO5sx8LHp8peQ1ELhMZHbR0Gg==
+  dependencies:
+    "@types/node" "*"
+
+"@types/stream-json@^1.5.1":
+  version "1.5.1"
+  resolved "https://registry.yarnpkg.com/@types/stream-json/-/stream-json-1.5.1.tgz#ae8d1133f9f920e18c6e94b233cb57d014a47b8d"
+  integrity sha512-Blg6GJbKVEB1J/y/2Tv+WrYiMzPTIqyuZ+zWDJtAF8Mo8A2XQh/lkSX4EYiM+qtS+GY8ThdGi6gGA9h4sjvL+g==
+  dependencies:
+    "@types/node" "*"
+    "@types/stream-chain" "*"
+
 "@types/tapable@*":
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.4.tgz#b4ffc7dc97b498c969b360a41eee247f82616370"
@@ -497,65 +516,75 @@
     "@types/webpack-sources" "*"
     source-map "^0.6.0"
 
-"@typescript-eslint/eslint-plugin@^3.9.1":
-  version "3.9.1"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.9.1.tgz#8cf27b6227d12d66dd8dc1f1a4b04d1daad51c2e"
-  integrity sha512-XIr+Mfv7i4paEdBf0JFdIl9/tVxyj+rlilWIfZ97Be0lZ7hPvUbS5iHt9Glc8kRI53dsr0PcAEudbf8rO2wGgg==
+"@typescript-eslint/eslint-plugin@^4.4.1":
+  version "4.4.1"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.4.1.tgz#b8acea0373bd2a388ac47df44652f00bf8b368f5"
+  integrity sha512-O+8Utz8pb4OmcA+Nfi5THQnQpHSD2sDUNw9AxNHpuYOo326HZTtG8gsfT+EAYuVrFNaLyNb2QnUNkmTRDskuRA==
   dependencies:
-    "@typescript-eslint/experimental-utils" "3.9.1"
+    "@typescript-eslint/experimental-utils" "4.4.1"
+    "@typescript-eslint/scope-manager" "4.4.1"
     debug "^4.1.1"
     functional-red-black-tree "^1.0.1"
     regexpp "^3.0.0"
     semver "^7.3.2"
     tsutils "^3.17.1"
 
-"@typescript-eslint/experimental-utils@3.9.1":
-  version "3.9.1"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.9.1.tgz#b140b2dc7a7554a44f8a86fb6fe7cbfe57ca059e"
-  integrity sha512-lkiZ8iBBaYoyEKhCkkw4SAeatXyBq9Ece5bZXdLe1LWBUwTszGbmbiqmQbwWA8cSYDnjWXp9eDbXpf9Sn0hLAg==
+"@typescript-eslint/experimental-utils@4.4.1":
+  version "4.4.1"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.4.1.tgz#40613b9757fa0170de3e0043254dbb077cafac0c"
+  integrity sha512-Nt4EVlb1mqExW9cWhpV6pd1a3DkUbX9DeyYsdoeziKOpIJ04S2KMVDO+SEidsXRH/XHDpbzXykKcMTLdTXH6cQ==
   dependencies:
     "@types/json-schema" "^7.0.3"
-    "@typescript-eslint/types" "3.9.1"
-    "@typescript-eslint/typescript-estree" "3.9.1"
+    "@typescript-eslint/scope-manager" "4.4.1"
+    "@typescript-eslint/types" "4.4.1"
+    "@typescript-eslint/typescript-estree" "4.4.1"
     eslint-scope "^5.0.0"
     eslint-utils "^2.0.0"
 
-"@typescript-eslint/parser@^3.9.1":
-  version "3.9.1"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.9.1.tgz#ab7983abaea0ae138ff5671c7c7739d8a191b181"
-  integrity sha512-y5QvPFUn4Vl4qM40lI+pNWhTcOWtpZAJ8pOEQ21fTTW4xTJkRplMjMRje7LYTXqVKKX9GJhcyweMz2+W1J5bMg==
+"@typescript-eslint/parser@^4.4.1":
+  version "4.4.1"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.4.1.tgz#25fde9c080611f303f2f33cedb145d2c59915b80"
+  integrity sha512-S0fuX5lDku28Au9REYUsV+hdJpW/rNW0gWlc4SXzF/kdrRaAVX9YCxKpziH7djeWT/HFAjLZcnY7NJD8xTeUEg==
   dependencies:
-    "@types/eslint-visitor-keys" "^1.0.0"
-    "@typescript-eslint/experimental-utils" "3.9.1"
-    "@typescript-eslint/types" "3.9.1"
-    "@typescript-eslint/typescript-estree" "3.9.1"
-    eslint-visitor-keys "^1.1.0"
+    "@typescript-eslint/scope-manager" "4.4.1"
+    "@typescript-eslint/types" "4.4.1"
+    "@typescript-eslint/typescript-estree" "4.4.1"
+    debug "^4.1.1"
+
+"@typescript-eslint/scope-manager@4.4.1":
+  version "4.4.1"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.4.1.tgz#d19447e60db2ce9c425898d62fa03b2cce8ea3f9"
+  integrity sha512-2oD/ZqD4Gj41UdFeWZxegH3cVEEH/Z6Bhr/XvwTtGv66737XkR4C9IqEkebCuqArqBJQSj4AgNHHiN1okzD/wQ==
+  dependencies:
+    "@typescript-eslint/types" "4.4.1"
+    "@typescript-eslint/visitor-keys" "4.4.1"
 
-"@typescript-eslint/types@3.9.1":
-  version "3.9.1"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.9.1.tgz#b2a6eaac843cf2f2777b3f2464fb1fbce5111416"
-  integrity sha512-15JcTlNQE1BsYy5NBhctnEhEoctjXOjOK+Q+rk8ugC+WXU9rAcS2BYhoh6X4rOaXJEpIYDl+p7ix+A5U0BqPTw==
+"@typescript-eslint/types@4.4.1":
+  version "4.4.1"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.4.1.tgz#c507b35cf523bc7ba00aae5f75ee9b810cdabbc1"
+  integrity sha512-KNDfH2bCyax5db+KKIZT4rfA8rEk5N0EJ8P0T5AJjo5xrV26UAzaiqoJCxeaibqc0c/IvZxp7v2g3difn2Pn3w==
 
-"@typescript-eslint/typescript-estree@3.9.1":
-  version "3.9.1"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.9.1.tgz#fd81cada74bc8a7f3a2345b00897acb087935779"
-  integrity sha512-IqM0gfGxOmIKPhiHW/iyAEXwSVqMmR2wJ9uXHNdFpqVvPaQ3dWg302vW127sBpAiqM9SfHhyS40NKLsoMpN2KA==
+"@typescript-eslint/typescript-estree@4.4.1":
+  version "4.4.1"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.4.1.tgz#598f6de488106c2587d47ca2462c60f6e2797cb8"
+  integrity sha512-wP/V7ScKzgSdtcY1a0pZYBoCxrCstLrgRQ2O9MmCUZDtmgxCO/TCqOTGRVwpP4/2hVfqMz/Vw1ZYrG8cVxvN3g==
   dependencies:
-    "@typescript-eslint/types" "3.9.1"
-    "@typescript-eslint/visitor-keys" "3.9.1"
+    "@typescript-eslint/types" "4.4.1"
+    "@typescript-eslint/visitor-keys" "4.4.1"
     debug "^4.1.1"
-    glob "^7.1.6"
+    globby "^11.0.1"
     is-glob "^4.0.1"
     lodash "^4.17.15"
     semver "^7.3.2"
     tsutils "^3.17.1"
 
-"@typescript-eslint/visitor-keys@3.9.1":
-  version "3.9.1"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.9.1.tgz#92af3747cdb71509199a8f7a4f00b41d636551d1"
-  integrity sha512-zxdtUjeoSh+prCpogswMwVUJfEFmCOjdzK9rpNjNBfm6EyPt99x3RrJoBOGZO23FCt0WPKUCOL5mb/9D5LjdwQ==
+"@typescript-eslint/visitor-keys@4.4.1":
+  version "4.4.1"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.4.1.tgz#1769dc7a9e2d7d2cfd3318b77ed8249187aed5c3"
+  integrity sha512-H2JMWhLaJNeaylSnMSQFEhT/S/FsJbebQALmoJxMPMxLtlVAMy2uJP/Z543n9IizhjRayLSqoInehCeNW9rWcw==
   dependencies:
-    eslint-visitor-keys "^1.1.0"
+    "@typescript-eslint/types" "4.4.1"
+    eslint-visitor-keys "^2.0.0"
 
 "@webassemblyjs/ast@1.9.0":
   version "1.9.0"
@@ -830,11 +859,6 @@ ansi-regex@^5.0.0:
   resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75"
   integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==
 
-ansi-styles@^2.2.1:
-  version "2.2.1"
-  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
-  integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
-
 ansi-styles@^3.2.0, ansi-styles@^3.2.1:
   version "3.2.1"
   resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
@@ -842,7 +866,7 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1:
   dependencies:
     color-convert "^1.9.0"
 
-ansi-styles@^4.0.0:
+ansi-styles@^4.0.0, ansi-styles@^4.1.0:
   version "4.2.1"
   resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359"
   integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==
@@ -850,13 +874,6 @@ ansi-styles@^4.0.0:
     "@types/color-name" "^1.1.1"
     color-convert "^2.0.1"
 
-ansi-styles@^4.1.0:
-  version "4.3.0"
-  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
-  integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
-  dependencies:
-    color-convert "^2.0.1"
-
 anymatch@^1.3.0:
   version "1.3.2"
   resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a"
@@ -1067,6 +1084,21 @@ atob@^2.1.1:
   resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
   integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
 
+aws-sdk@^2.727.1:
+  version "2.727.1"
+  resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.727.1.tgz#bde7a4b57b6c5b34370ad20963472ea7d24a9351"
+  integrity sha512-K+XdN11os6hvI9DgWEK9m/fPKHuDDVZalFWPouwqSk0phEdDCJ/K8InHUFL9DMvE4bxyWRuqI9dzNfdmxX0sxQ==
+  dependencies:
+    buffer "4.9.2"
+    events "1.1.1"
+    ieee754 "1.1.13"
+    jmespath "0.15.0"
+    querystring "0.2.0"
+    sax "1.2.1"
+    url "0.10.3"
+    uuid "3.3.2"
+    xml2js "0.4.19"
+
 aws-sign2@~0.7.0:
   version "0.7.0"
   resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
@@ -1132,14 +1164,6 @@ binary-extensions@^2.0.0:
   resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9"
   integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==
 
-bl@^1.0.0:
-  version "1.2.2"
-  resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c"
-  integrity sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==
-  dependencies:
-    readable-stream "^2.3.5"
-    safe-buffer "^5.1.1"
-
 bluebird@^3.5.5:
   version "3.5.5"
   resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f"
@@ -1263,13 +1287,6 @@ browserify-sign@^4.0.0:
     inherits "^2.0.1"
     parse-asn1 "^5.0.0"
 
-browserify-zlib@^0.1.4:
-  version "0.1.4"
-  resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d"
-  integrity sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=
-  dependencies:
-    pako "~0.2.0"
-
 browserify-zlib@^0.2.0:
   version "0.2.0"
   resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f"
@@ -1277,29 +1294,11 @@ browserify-zlib@^0.2.0:
   dependencies:
     pako "~1.0.5"
 
-buffer-alloc-unsafe@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0"
-  integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==
-
-buffer-alloc@^1.2.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec"
-  integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==
-  dependencies:
-    buffer-alloc-unsafe "^1.1.0"
-    buffer-fill "^1.0.0"
-
 buffer-equal-constant-time@1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819"
   integrity sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=
 
-buffer-fill@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
-  integrity sha1-+PeLdniYiO858gXNY39o5wISKyw=
-
 buffer-from@^1.0.0, buffer-from@^1.1.0:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
@@ -1310,6 +1309,15 @@ buffer-xor@^1.0.3:
   resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
   integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=
 
+buffer@4.9.2:
+  version "4.9.2"
+  resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8"
+  integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==
+  dependencies:
+    base64-js "^1.0.2"
+    ieee754 "^1.1.4"
+    isarray "^1.0.0"
+
 buffer@^4.3.0:
   version "4.9.1"
   resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
@@ -1439,17 +1447,6 @@ chai@^4.2.0:
     pathval "^1.1.0"
     type-detect "^4.0.5"
 
-chalk@^1.1.1:
-  version "1.1.3"
-  resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
-  integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
-  dependencies:
-    ansi-styles "^2.2.1"
-    escape-string-regexp "^1.0.2"
-    has-ansi "^2.0.0"
-    strip-ansi "^3.0.0"
-    supports-color "^2.0.0"
-
 chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.2:
   version "2.4.2"
   resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
@@ -1572,11 +1569,6 @@ chokidar@^3.4.0:
   optionalDependencies:
     fsevents "~2.1.2"
 
-chownr@^1.0.1:
-  version "1.1.3"
-  resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142"
-  integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==
-
 chownr@^1.1.1:
   version "1.1.2"
   resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.2.tgz#a18f1e0b269c8a6a5d3c86eb298beb14c3dd7bf6"
@@ -1622,13 +1614,6 @@ clean-stack@^2.0.0:
   resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
   integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
 
-cli-cursor@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987"
-  integrity sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=
-  dependencies:
-    restore-cursor "^1.0.1"
-
 cli-cursor@^2.1.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
@@ -1643,21 +1628,11 @@ cli-cursor@^3.1.0:
   dependencies:
     restore-cursor "^3.1.0"
 
-cli-spinners@^0.1.2:
-  version "0.1.2"
-  resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c"
-  integrity sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=
-
-cli-spinners@^2.0.0:
+cli-spinners@^2.0.0, cli-spinners@^2.2.0:
   version "2.2.0"
   resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.2.0.tgz#e8b988d9206c692302d8ee834e7a85c0144d8f77"
   integrity sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ==
 
-cli-spinners@^2.2.0:
-  version "2.5.0"
-  resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.5.0.tgz#12763e47251bf951cb75c201dfa58ff1bcb2d047"
-  integrity sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ==
-
 cli-truncate@2.1.0, cli-truncate@^2.1.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7"
@@ -2206,7 +2181,7 @@ duplexer@~0.1.1:
   resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
   integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=
 
-duplexify@^3.4.2, duplexify@^3.5.0, duplexify@^3.6.0:
+duplexify@^3.4.2, duplexify@^3.6.0:
   version "3.7.1"
   resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"
   integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==
@@ -2236,24 +2211,10 @@ ee-first@1.1.1:
   resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
   integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
 
-electron-docs@^3.0.2:
-  version "3.0.2"
-  resolved "https://registry.yarnpkg.com/electron-docs/-/electron-docs-3.0.2.tgz#340d57e6c0dbf86a97249fd451dff6221021754a"
-  integrity sha1-NA1X5sDb+GqXJJ/UUd/2IhAhdUo=
-  dependencies:
-    got "^6.3.0"
-    gunzip-maybe "^1.3.1"
-    node-dir "^0.1.12"
-    ora "^0.2.3"
-    path-exists "^3.0.0"
-    pify "^2.3.0"
-    semver "^5.1.0"
-    tar-fs "^1.13.0"
-
 elliptic@^6.0.0:
-  version "6.5.0"
-  resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.0.tgz#2b8ed4c891b7de3200e14412a5b8248c7af505ca"
-  integrity sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg==
+  version "6.5.3"
+  resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6"
+  integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==
   dependencies:
     bn.js "^4.4.0"
     brorand "^1.0.1"
@@ -2326,9 +2287,9 @@ ensure-posix-path@^1.0.0:
   integrity sha512-VWU0/zXzVbeJNXvME/5EmLuEj2TauvoaTz6aFYK1Z92JCBlDlZ3Gu0tuGR42kpW1754ywTs+QB0g5TP0oj9Zaw==
 
 entities@~2.0.0:
-  version "2.0.3"
-  resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f"
-  integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4"
+  integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==
 
 errno@^0.1.3, errno@~0.1.7:
   version "0.1.7"
@@ -2401,7 +2362,7 @@ escape-html@~1.0.3:
   resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
   integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
 
-escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
+escape-string-regexp@^1.0.5:
   version "1.0.5"
   resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
   integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
@@ -2601,6 +2562,11 @@ eslint-visitor-keys@^1.2.0:
   resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
   integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
 
+eslint-visitor-keys@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8"
+  integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==
+
 eslint@^7.4.0:
   version "7.4.0"
   resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.4.0.tgz#4e35a2697e6c1972f9d6ef2b690ad319f80f206f"
@@ -2755,6 +2721,11 @@ events-to-array@^1.0.1:
   resolved "https://registry.yarnpkg.com/events-to-array/-/events-to-array-1.1.2.tgz#2d41f563e1fe400ed4962fe1a4d5c6a7539df7f6"
   integrity sha1-LUH1Y+H+QA7Uli/hpNXGp1Od9/Y=
 
+events@1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
+  integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=
+
 events@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88"
@@ -2796,11 +2767,6 @@ execa@^4.0.1:
     signal-exit "^3.0.2"
     strip-final-newline "^2.0.0"
 
-exit-hook@^1.0.0:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8"
-  integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=
-
 expand-brackets@^0.1.4:
   version "0.1.5"
   resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
@@ -3188,11 +3154,6 @@ from2@^2.1.0:
     inherits "^2.0.1"
     readable-stream "^2.0.0"
 
-fs-constants@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
-  integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
-
 fs-extra@^7.0.1:
   version "7.0.1"
   resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9"
@@ -3445,7 +3406,7 @@ globals@^12.1.0:
   dependencies:
     type-fest "^0.8.1"
 
-globby@^11.0.0:
+globby@^11.0.0, globby@^11.0.1:
   version "11.0.1"
   resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357"
   integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==
@@ -3480,27 +3441,15 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.9
   integrity sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==
 
 graceful-fs@^4.1.6, graceful-fs@^4.2.0:
-  version "4.2.4"
-  resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
-  integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==
+  version "4.2.3"
+  resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423"
+  integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==
 
 graceful-fs@~4.1.11:
   version "4.1.15"
   resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
   integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==
 
-gunzip-maybe@^1.3.1:
-  version "1.4.1"
-  resolved "https://registry.yarnpkg.com/gunzip-maybe/-/gunzip-maybe-1.4.1.tgz#39c72ed89d1b49ba708e18776500488902a52027"
-  integrity sha512-qtutIKMthNJJgeHQS7kZ9FqDq59/Wn0G2HYCRNjpup7yKfVI6/eqwpmroyZGFoCYaG+sW6psNVb4zoLADHpp2g==
-  dependencies:
-    browserify-zlib "^0.1.4"
-    is-deflate "^1.0.0"
-    is-gzip "^1.0.0"
-    peek-stream "^1.1.0"
-    pumpify "^1.3.3"
-    through2 "^2.0.3"
-
 har-schema@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
@@ -3514,13 +3463,6 @@ har-validator@~5.1.0, har-validator@~5.1.3:
     ajv "^6.5.5"
     har-schema "^2.0.0"
 
-has-ansi@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
-  integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
-  dependencies:
-    ansi-regex "^2.0.0"
-
 has-flag@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
@@ -3690,7 +3632,7 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4:
   dependencies:
     safer-buffer ">= 2.1.2 < 3"
 
-ieee754@^1.1.4:
+ieee754@1.1.13, ieee754@^1.1.4:
   version "1.1.13"
   resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
   integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
@@ -3940,11 +3882,6 @@ is-decimal@^1.0.0:
   resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.3.tgz#381068759b9dc807d8c0dc0bfbae2b68e1da48b7"
   integrity sha512-bvLSwoDg2q6Gf+E2LEPiklHZxxiSi3XAh4Mav65mKqTfCO1HM3uBs24TjEH8iJX3bbDdLXKJXBTmGzuTUuAEjQ==
 
-is-deflate@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/is-deflate/-/is-deflate-1.0.0.tgz#c862901c3c161fb09dac7cdc7e784f80e98f2f14"
-  integrity sha1-yGKQHDwWH7CdrHzcfnhPgOmPLxQ=
-
 is-descriptor@^0.1.0:
   version "0.1.6"
   resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
@@ -4052,11 +3989,6 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
   dependencies:
     is-extglob "^2.1.1"
 
-is-gzip@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/is-gzip/-/is-gzip-1.0.0.tgz#6ca8b07b99c77998025900e555ced8ed80879a83"
-  integrity sha1-bKiwe5nHeZgCWQDlVc7Y7YCHmoM=
-
 is-hexadecimal@^1.0.0:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.3.tgz#e8a426a69b6d31470d3a33a47bb825cda02506ee"
@@ -4246,6 +4178,11 @@ isstream@~0.1.2:
   resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
   integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
 
+jmespath@0.15.0:
+  version "0.15.0"
+  resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217"
+  integrity sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=
+
 "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
   version "4.0.0"
   resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
@@ -4615,9 +4552,9 @@ lodash.range@^3.2.0:
   integrity sha1-9GHliPZmg/fq3q3lE+OKaaVloV0=
 
 lodash@^4.0.0, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15:
-  version "4.17.15"
-  resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
-  integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
+  version "4.17.20"
+  resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
+  integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
 
 log-symbols@^2.2.0:
   version "2.2.0"
@@ -4953,12 +4890,12 @@ minimist@0.0.8:
   resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
   integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
 
-minimist@^1.1.0, minimist@^1.1.3, minimist@~1.2.0:
+minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0, minimist@~1.2.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
   integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
 
-minimist@^1.2.0, minimist@^1.2.5:
+minimist@^1.2.5:
   version "1.2.5"
   resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
   integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
@@ -5099,17 +5036,10 @@ nice-try@^1.0.4:
   resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
   integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
 
-node-dir@^0.1.12:
-  version "0.1.17"
-  resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5"
-  integrity sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU=
-  dependencies:
-    minimatch "^3.0.2"
-
 node-fetch@^2.3.0:
-  version "2.6.0"
-  resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd"
-  integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==
+  version "2.6.1"
+  resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052"
+  integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==
 
 node-libs-browser@^2.2.1:
   version "2.2.1"
@@ -5367,11 +5297,6 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0:
   dependencies:
     wrappy "1"
 
-onetime@^1.0.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789"
-  integrity sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=
-
 onetime@^2.0.0:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
@@ -5380,9 +5305,9 @@ onetime@^2.0.0:
     mimic-fn "^1.0.0"
 
 onetime@^5.1.0:
-  version "5.1.2"
-  resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
-  integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
+  version "5.1.0"
+  resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5"
+  integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==
   dependencies:
     mimic-fn "^2.1.0"
 
@@ -5417,16 +5342,6 @@ optionator@^0.9.1:
     type-check "^0.4.0"
     word-wrap "^1.2.3"
 
-ora@^0.2.3:
-  version "0.2.3"
-  resolved "https://registry.yarnpkg.com/ora/-/ora-0.2.3.tgz#37527d220adcd53c39b73571d754156d5db657a4"
-  integrity sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=
-  dependencies:
-    chalk "^1.1.1"
-    cli-cursor "^1.0.2"
-    cli-spinners "^0.1.2"
-    object-assign "^4.0.1"
-
 ora@^3.4.0:
   version "3.4.0"
   resolved "https://registry.yarnpkg.com/ora/-/ora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318"
@@ -5440,9 +5355,9 @@ ora@^3.4.0:
     wcwidth "^1.0.1"
 
 ora@^4.0.3:
-  version "4.1.1"
-  resolved "https://registry.yarnpkg.com/ora/-/ora-4.1.1.tgz#566cc0348a15c36f5f0e979612842e02ba9dddbc"
-  integrity sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A==
+  version "4.0.3"
+  resolved "https://registry.yarnpkg.com/ora/-/ora-4.0.3.tgz#752a1b7b4be4825546a7a3d59256fa523b6b6d05"
+  integrity sha512-fnDebVFyz309A73cqCipVL1fBZewq4vwgSHfxh43vVy31mbyoQ8sCH3Oeaog/owYOs/lLlGVPCISQonTneg6Pg==
   dependencies:
     chalk "^3.0.0"
     cli-cursor "^3.1.0"
@@ -5533,11 +5448,6 @@ p-try@^2.0.0:
   resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
   integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
 
-pako@~0.2.0:
-  version "0.2.9"
-  resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
-  integrity sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=
-
 pako@~1.0.5:
   version "1.0.10"
   resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732"
@@ -5735,15 +5645,6 @@ pbkdf2@^3.0.3:
     safe-buffer "^5.0.1"
     sha.js "^2.4.8"
 
-peek-stream@^1.1.0:
-  version "1.1.3"
-  resolved "https://registry.yarnpkg.com/peek-stream/-/peek-stream-1.1.3.tgz#3b35d84b7ccbbd262fff31dc10da56856ead6d67"
-  integrity sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==
-  dependencies:
-    buffer-from "^1.0.0"
-    duplexify "^3.5.0"
-    through2 "^2.0.3"
-
 performance-now@^2.1.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
@@ -5759,7 +5660,7 @@ picomatch@^2.2.1:
   resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
   integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
 
-pify@^2.0.0, pify@^2.3.0:
+pify@^2.0.0:
   version "2.3.0"
   resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
   integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
@@ -5968,14 +5869,6 @@ public-encrypt@^4.0.0:
     randombytes "^2.0.1"
     safe-buffer "^5.1.2"
 
-pump@^1.0.0:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954"
-  integrity sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==
-  dependencies:
-    end-of-stream "^1.1.0"
-    once "^1.3.1"
-
 pump@^2.0.0:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
@@ -6139,7 +6032,7 @@ read-pkg@^5.1.1:
     parse-json "^4.0.0"
     type-fest "^0.4.1"
 
-"readable-stream@1 || 2", readable-stream@^2, readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6:
+"readable-stream@1 || 2", readable-stream@^2, readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6:
   version "2.3.6"
   resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
   integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
@@ -6921,14 +6814,6 @@ resolve@^1.10.1, resolve@^1.11.0, resolve@^1.13.1, resolve@^1.17.0:
   dependencies:
     path-parse "^1.0.6"
 
-restore-cursor@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541"
-  integrity sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=
-  dependencies:
-    exit-hook "^1.0.0"
-    onetime "^1.0.0"
-
 restore-cursor@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
@@ -7026,7 +6911,12 @@ safe-regex@^1.1.0:
   resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
   integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
 
-sax@^1.2.4:
+sax@1.2.1:
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a"
+  integrity sha1-e45lYZCyKOgaZq6nSEgNgozS03o=
+
+sax@>=0.6.0, sax@^1.2.4:
   version "1.2.4"
   resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
   integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
@@ -7452,6 +7342,11 @@ stream-browserify@^2.0.1:
     inherits "~2.0.1"
     readable-stream "^2.0.2"
 
+stream-chain@^2.2.3:
+  version "2.2.3"
+  resolved "https://registry.yarnpkg.com/stream-chain/-/stream-chain-2.2.3.tgz#44cfa21ab673e53a3f1691b3d1665c3aceb1983b"
+  integrity sha512-w+WgmCZ6BItPAD3/4HD1eDiDHRLhjSSyIV+F0kcmmRyz8Uv9hvQF22KyaiAUmOlmX3pJ6F95h+C191UbS8Oe/g==
+
 stream-each@^1.1.0:
   version "1.2.3"
   resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae"
@@ -7471,6 +7366,13 @@ stream-http@^2.7.2:
     to-arraybuffer "^1.0.0"
     xtend "^4.0.0"
 
+stream-json@^1.7.1:
+  version "1.7.1"
+  resolved "https://registry.yarnpkg.com/stream-json/-/stream-json-1.7.1.tgz#ec7e414c2eba456c89a4b4e5223794eabc3860c4"
+  integrity sha512-I7g0IDqvdJXbJ279/D3ZoTx0VMhmKnEF7u38CffeWdF8bfpMPsLo+5fWnkNjO2GU/JjWaRjdH+zmH03q+XGXFw==
+  dependencies:
+    stream-chain "^2.2.3"
+
 stream-shift@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952"
@@ -7644,11 +7546,6 @@ sumchecker@^2.0.2:
   dependencies:
     debug "^2.2.0"
 
-supports-color@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
-  integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
-
 supports-color@^4.1.0:
   version "4.5.0"
   resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b"
@@ -7671,9 +7568,9 @@ supports-color@^6.1.0:
     has-flag "^3.0.0"
 
 supports-color@^7.1.0:
-  version "7.2.0"
-  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
-  integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
+  version "7.1.0"
+  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1"
+  integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==
   dependencies:
     has-flag "^4.0.0"
 
@@ -7715,29 +7612,6 @@ tapable@^1.0.0, tapable@^1.1.3:
   resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
   integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
 
-tar-fs@^1.13.0:
-  version "1.16.3"
-  resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.3.tgz#966a628841da2c4010406a82167cbd5e0c72d509"
-  integrity sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==
-  dependencies:
-    chownr "^1.0.1"
-    mkdirp "^0.5.1"
-    pump "^1.0.0"
-    tar-stream "^1.1.2"
-
-tar-stream@^1.1.2:
-  version "1.6.2"
-  resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555"
-  integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==
-  dependencies:
-    bl "^1.0.0"
-    buffer-alloc "^1.2.0"
-    end-of-stream "^1.0.0"
-    fs-constants "^1.0.0"
-    readable-stream "^2.3.0"
-    to-buffer "^1.1.1"
-    xtend "^4.0.0"
-
 tar@^4, tar@^4.4.7:
   version "4.4.10"
   resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.10.tgz#946b2810b9a5e0b26140cf78bea6b0b0d689eba1"
@@ -7793,7 +7667,7 @@ throttleit@0.0.2:
   resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-0.0.2.tgz#cfedf88e60c00dd9697b61fdd2a8343a9b680eaf"
   integrity sha1-z+34jmDADdlpe2H90qg0OptoDq8=
 
-through2@^2.0.0, through2@^2.0.3, through2@~2.0.0:
+through2@^2.0.0, through2@~2.0.0:
   version "2.0.5"
   resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
   integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==
@@ -7845,11 +7719,6 @@ to-arraybuffer@^1.0.0:
   resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
   integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=
 
-to-buffer@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80"
-  integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==
-
 to-object-path@^0.3.0:
   version "0.3.0"
   resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
@@ -8280,6 +8149,14 @@ url-parse-lax@^1.0.0:
   dependencies:
     prepend-http "^1.0.1"
 
+url@0.10.3:
+  version "0.10.3"
+  resolved "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64"
+  integrity sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=
+  dependencies:
+    punycode "1.3.2"
+    querystring "0.2.0"
+
 url@^0.11.0:
   version "0.11.0"
   resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
@@ -8317,7 +8194,7 @@ utils-merge@1.0.1:
   resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
   integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
 
-uuid@^3.3.2:
+uuid@3.3.2, uuid@^3.3.2:
   version "3.3.2"
   resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
   integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==
@@ -8442,7 +8319,7 @@ webpack-cli@^3.3.12:
     v8-compile-cache "^2.1.1"
     yargs "^13.3.2"
 
-webpack-sources@^1.4.0, webpack-sources@^1.4.1:
+webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1:
   version "1.4.3"
   resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933"
   integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==
@@ -8548,6 +8425,13 @@ wrapped@^1.0.1:
     co "3.1.0"
     sliced "^1.0.1"
 
+wrapper-webpack-plugin@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/wrapper-webpack-plugin/-/wrapper-webpack-plugin-2.1.0.tgz#2b5d80f46af84c9eeb707d08796a115e233adeac"
+  integrity sha512-e+2FhSYGCxhDq3PcUw5mRhH+8vcYa+9d9AuLChJUZ9ZbUPhQOHZ/O2dnN98iTqeUuvrzSSOv13+x/NhrAm5JEg==
+  dependencies:
+    webpack-sources "^1.1.0"
+
 wrappy@1:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
@@ -8570,6 +8454,14 @@ x-is-string@^0.1.0:
   resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82"
   integrity sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=
 
+xml2js@0.4.19:
+  version "0.4.19"
+  resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7"
+  integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==
+  dependencies:
+    sax ">=0.6.0"
+    xmlbuilder "~9.0.1"
+
 xmlbuilder@~4.2.0:
   version "4.2.1"
   resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-4.2.1.tgz#aa58a3041a066f90eaa16c2f5389ff19f3f461a5"
@@ -8577,6 +8469,11 @@ xmlbuilder@~4.2.0:
   dependencies:
     lodash "^4.0.0"
 
+xmlbuilder@~9.0.1:
+  version "9.0.7"
+  resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d"
+  integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=
+
 xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1:
   version "4.0.2"
   resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
diff --git a/devel/electron11/pkg-descr b/devel/electron12/pkg-descr
similarity index 100%
rename from devel/electron11/pkg-descr
rename to devel/electron12/pkg-descr
diff --git a/devel/electron11/pkg-plist b/devel/electron12/pkg-plist
similarity index 92%
rename from devel/electron11/pkg-plist
rename to devel/electron12/pkg-plist
index 2740a487376252e2d0ce2941dab43f89f5b44650..c5bf444cd6335a683b1b86e5fbd887386751b2c2 100644
--- a/devel/electron11/pkg-plist
+++ b/devel/electron12/pkg-plist
@@ -1,4 +1,4 @@
-bin/electron11
+bin/electron%%ELECTRON_VER_MAJOR%%
 %%DATADIR%%/LICENSE
 %%DATADIR%%/LICENSES.chromium.html
 %%DATADIR%%/chrome_100_percent.pak
@@ -11,7 +11,7 @@ bin/electron11
 %%DATADIR%%/libEGL.so
 %%DATADIR%%/libGLESv2.so
 %%DATADIR%%/libvk_swiftshader.so
-%%DATADIR%%/libvulkan.so
+%%DATADIR%%/libvulkan.so.1
 %%DATADIR%%/locales/am.pak
 %%DATADIR%%/locales/ar.pak
 %%DATADIR%%/locales/bg.pak
@@ -70,8 +70,12 @@ bin/electron11
 %%DATADIR%%/node_headers/include/node/config.gypi
 %%DATADIR%%/node_headers/include/node/cppgc/allocation.h
 %%DATADIR%%/node_headers/include/node/cppgc/common.h
+%%DATADIR%%/node_headers/include/node/cppgc/cross-thread-persistent.h
 %%DATADIR%%/node_headers/include/node/cppgc/custom-space.h
+%%DATADIR%%/node_headers/include/node/cppgc/default-platform.h
+%%DATADIR%%/node_headers/include/node/cppgc/ephemeron-pair.h
 %%DATADIR%%/node_headers/include/node/cppgc/garbage-collected.h
+%%DATADIR%%/node_headers/include/node/cppgc/heap-consistency.h
 %%DATADIR%%/node_headers/include/node/cppgc/heap.h
 %%DATADIR%%/node_headers/include/node/cppgc/internal/api-constants.h
 %%DATADIR%%/node_headers/include/node/cppgc/internal/atomic-entry-flag.h
@@ -80,6 +84,7 @@ bin/electron11
 %%DATADIR%%/node_headers/include/node/cppgc/internal/finalizer-trait.h
 %%DATADIR%%/node_headers/include/node/cppgc/internal/gc-info.h
 %%DATADIR%%/node_headers/include/node/cppgc/internal/logging.h
+%%DATADIR%%/node_headers/include/node/cppgc/internal/name-trait.h
 %%DATADIR%%/node_headers/include/node/cppgc/internal/persistent-node.h
 %%DATADIR%%/node_headers/include/node/cppgc/internal/pointer-policies.h
 %%DATADIR%%/node_headers/include/node/cppgc/internal/prefinalizer-handler.h
@@ -88,6 +93,7 @@ bin/electron11
 %%DATADIR%%/node_headers/include/node/cppgc/liveness-broker.h
 %%DATADIR%%/node_headers/include/node/cppgc/macros.h
 %%DATADIR%%/node_headers/include/node/cppgc/member.h
+%%DATADIR%%/node_headers/include/node/cppgc/name-provider.h
 %%DATADIR%%/node_headers/include/node/cppgc/persistent.h
 %%DATADIR%%/node_headers/include/node/cppgc/platform.h
 %%DATADIR%%/node_headers/include/node/cppgc/prefinalizer.h
@@ -125,8 +131,10 @@ bin/electron11
 %%DATADIR%%/node_headers/include/node/v8-cppgc.h
 %%DATADIR%%/node_headers/include/node/v8-fast-api-calls.h
 %%DATADIR%%/node_headers/include/node/v8-internal.h
+%%DATADIR%%/node_headers/include/node/v8-metrics.h
 %%DATADIR%%/node_headers/include/node/v8-platform.h
 %%DATADIR%%/node_headers/include/node/v8-profiler.h
+%%DATADIR%%/node_headers/include/node/v8-unwinder-state.h
 %%DATADIR%%/node_headers/include/node/v8-util.h
 %%DATADIR%%/node_headers/include/node/v8-value-serializer-version.h
 %%DATADIR%%/node_headers/include/node/v8-version-string.h