diff --git a/Mk/Uses/qt-dist.mk b/Mk/Uses/qt-dist.mk
index d63794857ac3..de81ae118073 100644
--- a/Mk/Uses/qt-dist.mk
+++ b/Mk/Uses/qt-dist.mk
@@ -1,522 +1,526 @@
 # There are three Qt related USES files with different access to Qt.
 #   - qmake: The port requires Qt's qmake to build -- creates the configure target
 #            - auto includes qt.mk
 #   - qt-dist: The port is a port for a part of Qt
 #            - auto includes qt.mk
 #   - qt.mk  - Dependency handling. USE_QT=foo bar
 #
 #
 # Usage
 #    qt-dist:<version>[,yes|modulename]
 #
 # MAINTAINER:	kde@FreeBSD.org
 
 .if !defined(_QT_DIST_MK_INCLUDED)
 _QT_DIST_MK_INCLUDED=	qt-dist.mk
 
 # Suck in qt.mk and qmake.mk
 qt_ARGS?=	# empty
 .include "${USESDIR}/qt.mk"
 qmake_ARGS?=	# empty
 .include "${USESDIR}/qmake.mk"
 
 # Supported distribution arguments
 _COMMON_DISTS=		3d base charts datavis3d declarative imageformats multimedia \
 			networkauth quick3d quicktimeline remoteobjects scxml sensors \
 			serialbus serialport speech svg tools translations virtualkeyboard \
 			wayland webchannel webengine websockets
 _QT5_DISTS=		connectivity gamepad graphicaleffects location quickcontrols \
 			quickcontrols2 script webglplugin webview \
 			x11extras xmlpatterns
 _QT6_DISTS=		5compat doc languageserver lottie positioning shadertools
 
 _QT_DISTS=		${_COMMON_DISTS} \
 			${_QT${_QT_VER}_DISTS}
 
 # We only accept one item as an argument. The fetch target further below works
 # around this.
 _QT_DIST=		# empty
 .  for dist in ${_QT_DISTS:O:u}
 .    if ${qt-dist_ARGS:M${dist}}
 .      if empty(_QT_DIST)
 _QT_DIST=		${dist}
 .      else
 IGNORE=		cannot be installed: different Qt dists specified via qt-dist:[${qt-dist_ARGS:S/ /,/g}]
 .      endif
 .    endif
 .  endfor
 
 # Fall back to sensible defaults for _QT_DIST
 .  if empty(_QT_DIST)
 _QT_DIST=		${PORTNAME} # don't force qt-dist to be set for Qt5 ports which 75% of time are ${PORTNAME}
 .  endif
 
 # Check validitiy
 .  if empty(_QT_DISTS:M${_QT_DIST})
 IGNORE=			Unsupported qt-dist ${_QT_DIST} for qt:${_QT_VER}
 .  endif
 ################################################################################
 
 # Set standard bsd.port.mk variables.
 LICENSE?=		LGPL21
 WWW?=		https://www.qt.io/
 
 .  if !exists(${PKGDIR}/pkg-descr)
 DESCR?=			${PORTSDIR}/devel/${_QT_RELNAME}/pkg-descr
 .  endif
 
 # Stage support.
 _QT5_DESTDIRNAME=	INSTALL_ROOT
 _QT6_DESTDIRNAME=	DESTDIR
 DESTDIRNAME=		${_QT${_QT_VER}_DESTDIRNAME}
 
 # Qt's tarballs are xz compressed.
 .  if empty(USES:Mtar)
 EXTRACT_SUFX?=		.tar.xz
 .  endif
 
 # Qt5 specific master sites
 _QT5_MASTER_SITES_kde=		LOCAL
 _QT5_MASTER_SITE_SUBDIR_kde=	kde/KDE/Qt/${_QT_VERSION}
 _QT5_MASTER_SITES=		${MASTER_SITE_QT}
 _QT5_MASTER_SITE_SUBDIR=	official_releases/qt/${_QT_VERSION:R}/${_QT_VERSION}/submodules/
 # Qt6 specific master sites
 _QT6_MASTER_SITES=		${MASTER_SITE_QT}
 _QT6_MASTER_SITE_SUBDIR=	official_releases/qt/${_QT_VERSION:R}/${_QT_VERSION}/submodules \
 				official_releases/additional_libraries/${_QT_VERSION:R}/${_QT_VERSION}/
 # Qt5 specific distnames
+.  if ${_QT_DIST} == webengine
+_QT5_DISTNAME=			${_QT_DIST:S,^,qt,:S,$,-everywhere-opensource-src-${DISTVERSION},}
+.  else
 _QT5_DISTNAME=			${_QT_DIST:S,^,qt,:S,$,-everywhere-src-${DISTVERSION},}
+.  endif
 _QT5_DISTNAME_kde=		${_QT_DIST:S,^,kde-qt,:S,$,-${DISTVERSION},}
 # Qt6 specific distnames
 _QT6_DISTNAME=			${_QT_DIST:S,^,qt,:S,$,-everywhere-src-${DISTVERSION},}
 
 # Effective master sites and disfile valus
 MASTER_SITES=			${_QT${_QT_VER}_MASTER_SITES${_KDE_${_QT_DIST}:D_kde}}
 MASTER_SITE_SUBDIR=		${_QT${_QT_VER}_MASTER_SITE_SUBDIR${_KDE_${_QT_DIST}:D_kde}}
 DISTNAME=			${_QT${_QT_VER}_DISTNAME${_KDE_${_QT_DIST}:D_kde}}
 DISTFILES=			${DISTNAME:S,$,${EXTRACT_SUFX},}
 DIST_SUBDIR=			KDE/Qt/${_QT_VERSION}
 
 .  if ${_QT_VER:M5}
 # KDE maintains a repository with a patched Qt5 distribution.
 _KDE_3d=		0
 _KDE_base=		157
 _KDE_charts=		0
 _KDE_connectivity=	5
 _KDE_datavis3d=		0
 _KDE_declarative=	21
 _KDE_gamepad=		0
 _KDE_graphicaleffects=	0
 _KDE_imageformats=	6
 _KDE_location=		3
 _KDE_multimedia=	1
 _KDE_networkauth=	0
 _KDE_quick3d=		1
 _KDE_quickcontrols=	0
 _KDE_quickcontrols2=	7
 _KDE_quicktimeline=	0
 _KDE_remoteobjects=	0
 _KDE_script=		0
 _KDE_script_ORIGIN_TAG=	v5.15.11-lts
 _KDE_script_VERSION=	5.15.11
 _KDE_scxml=		0
 _KDE_sensors=		0
 _KDE_serialbus=		0
 _KDE_serialport=	0
 _KDE_speech=		1
 _KDE_svg=		8
 _KDE_tools=		1
 _KDE_translations=	0
 _KDE_virtualkeyboard=	0
 _KDE_wayland=		57
 _KDE_webchannel=	3
 _KDE_webglplugin=	0
 _KDE_websockets=	2
 _KDE_webview=		0
 _KDE_x11extras=		0
 _KDE_xmlpatterns=	0
 
 .    if defined(_KDE_${_QT_DIST})
 QT5_KDE_PATCH=		p${_KDE_${_QT_DIST}}
 _KDE_${_QT_DIST}_VERSION?=	${_QT_VERSION}
 _KDE_${_QT_DIST}_ORIGIN_TAG?=	v${_KDE_${_QT_DIST}_VERSION}-lts-lgpl
 COMMENT+=		(KDE patched)
 .    else
 QT5_KDE_PATCH=		#
 .    endif
 .  endif # ${_QT_VER:M5}
 
 # Environment setup for Qt5
 .  if ${_QT_VER:M5}
 # Qt (at least when used with qmake) has a tendency to overlink: some libraries
 # have dependencies on others in the mkspec configurations and the latter are
 # always passed to the linker even if they are not actually used. By passing
 # --as-needed to the linker by default when building the Qt ports we do not
 # have to declare a lot of unnecessary dependencies in USE_QT5.
 LDFLAGS+=		-Wl,--as-needed
 
 .    if ${_QT_DIST} == "base" && ${PORTNAME} != "qmake"
 # Qt configure requires pkg-config to detect dependencies.
 .include "${USESDIR}/pkgconfig.mk"
 .    endif
 
 # -nomake is only used by qtbase's configure script.
 # Other ports from other Qt modules will automatically build examples and
 # tests if the directories exist because of mkspecs/features/qt_parts.prf.
 EXTRACT_AFTER_ARGS?=	${DISTNAME:S,$,/examples,:S,^,--exclude ,} \
 			${DISTNAME:S,$,/tests,:S,^,--exclude ,} \
 			--no-same-owner --no-same-permissions
 .  endif # ! ${_QT_VER:M5}
 
 # Build setup for Qt6
 .  if ${_QT_VER:M6}
 CMAKE_ARGS+=		-DCMAKE_INSTALL_PREFIX=${PREFIX} \
 			-DINSTALL_BINDIR=${PREFIX}/${QT_BINDIR_REL} \
 			-DINSTALL_PUBLICBINDIR=${PREFIX}/bin \
 			-DINSTALL_LIBDIR=${PREFIX}/${QT_LIBDIR_REL} \
 			-DINSTALL_LIBEXECDIR=${PREFIX}/${QT_LIBEXECDIR_REL} \
 			-DINSTALL_DOCDIR=${PREFIX}/${QT_DOCDIR_REL} \
 			-DINSTALL_ARCHDATADIR=${PREFIX}/${QT_ARCHDIR_REL} \
 			-DINSTALL_DATADIR=${PREFIX}/${QT_DATADIR_REL} \
 			-DINSTALL_INCLUDEDIR=${PREFIX}/${QT_INCDIR_REL} \
 			-DINSTALL_MKSPECSDIR=${PREFIX}/${QT_MKSPECDIR_REL} \
 			-DINSTALL_EXAMPLESDIR=${PREFIX}/${QT_EXAMPLEDIR_REL} \
 			-DINSTALL_DESCRIPTIONSDIR=${PREFIX}/${QT_DESCRIPTIONSDIR_REL} \
 			-DQT_QMAKE_TARGET_MKSPEC:String=freebsd-clang \
 			--log-level=TRACE
 .  endif
 
 # Build setup for Qt5
 .  if ${_QT_VER:M5}
 CONFIGURE_ENV+=		MAKE="${MAKE:T}"
 
 CONFIGURE_ARGS+=	-opensource -confirm-license \
 			-no-pch \
 			-prefix ${PREFIX} \
 			-bindir ${PREFIX}/${QT_BINDIR_REL} \
 			-headerdir ${PREFIX}/${QT_INCDIR_REL} \
 			-libdir ${PREFIX}/${QT_LIBDIR_REL} \
 			-plugindir ${PREFIX}/${QT_PLUGINDIR_REL} \
 			-importdir ${PREFIX}/${QT_IMPORTDIR_REL} \
 			-datadir ${PREFIX}/${QT_DATADIR_REL} \
 			-docdir ${PREFIX}/${QT_DOCDIR_REL} \
 			-translationdir ${PREFIX}/${QT_L10NDIR_REL} \
 			-sysconfdir ${PREFIX}/${QT_ETCDIR_REL} \
 			-nomake examples -nomake tests \
 			-platform ${QMAKESPECNAME} \
 			-archdatadir ${PREFIX}/${QT_ARCHDIR_REL} \
 			-libexecdir ${PREFIX}/${QT_LIBEXECDIR_REL} \
 			-qmldir ${PREFIX}/${QT_QMLDIR_REL} \
 			-examplesdir ${PREFIX}/${QT_EXAMPLEDIR_REL} \
 			-testsdir ${PREFIX}/${QT_TESTDIR_REL}
 
 .    if ${ARCH} == i386 && empty(MACHINE_CPU:Msse2)
 CONFIGURE_ARGS+=	-no-sse2
 .    endif
 
 # Work around a bug in current binutils, where the gold linker creates
 # duplicate symbols. See pr 218187. Disable the gold-linker for Qt5 ports.
 CONFIGURE_ARGS+=	-no-use-gold-linker
 # Pass -recheck-all so that multiple calls to the configure script really
 # re-run all checks.
 CONFIGURE_ARGS+=	-recheck-all
 .  endif # ${_QT_VER:M5}
 
 .  if defined(WANT_QT_DEBUG) || defined(WITH_DEBUG)
 WITH_DEBUG=		yes
 STRIP=			# It's done prior to bsd.qt.mk inclusion.
 CONFIGURE_ARGS+=	-debug -separate-debug-info
 # Override configuration in global qconfig.pri.
 QMAKE_ARGS+=		QT_CONFIG+="debug separate_debug_info" \
 			QT_CONFIG-="release"
 .  else
 CONFIGURE_ARGS+=	-release -no-separate-debug-info
 QMAKE_ARGS+=		QT_CONFIG+="release" \
 			QT_CONFIG-="debug separate_debug_info"
 .  endif # defined(WANT_QT_DEBUG) || defined(WITH_DEBUG)
 
 .  if defined(WANT_QT_VERBOSE_CONFIGURE)
 CONFIGURE_ARGS+=	-verbose
 .  endif
 
 .  if ${_QT_DIST} == "base"
 _EXTRA_PATCHES_QT5=	${PORTSDIR}/devel/${_QT_RELNAME}/files/extrapatch-mkspecs_features_create__cmake.prf \
 			${PORTSDIR}/devel/${_QT_RELNAME}/files/extrapatch-mkspecs_features_qt__module.prf \
 			${PORTSDIR}/devel/${_QT_RELNAME}/files/extrapatch-mkspecs_common_bsd_bsd.conf \
 			${PORTSDIR}/devel/${_QT_RELNAME}/files/extrapatch-mkspecs_freebsd-clang_qmake.conf
 .    if ${ARCH:Mmips*} || (${ARCH:Mpowerpc*} && !exists(/usr/bin/clang)) || ${ARCH} == sparc64
 _EXTRA_PATCHES_QT5+=	${PORTSDIR}/devel/${_QT_RELNAME}/files/extra-patch-mkspecs_common_g++-base.conf \
 			${PORTSDIR}/devel/${_QT_RELNAME}/files/extra-patch-mkspecs_common_gcc-base.conf \
 			${PORTSDIR}/devel/${_QT_RELNAME}/files/extrapatch-mkspecs_freebsd-g++_qmake.conf
 USE_GCC=		yes
 .    elif ${ARCH} == armv7 || ${ARCH} == powerpc
 _EXTRA_PATCHES_QT5+=	${PORTSDIR}/devel/${_QT_RELNAME}/files/extra-patch-mkspecs_common_g++-base.conf \
 			${PORTSDIR}/devel/${_QT_RELNAME}/files/extra-patch-mkspecs_common_gcc-base.conf \
 			${PORTSDIR}/devel/${_QT_RELNAME}/files/extrapatch-mkspecs_freebsd-g++_qmake.conf
 .    endif
 .    if ${_QT_VER:M5}
 EXTRA_PATCHES?=		${PORTSDIR}/devel/${_QT_RELNAME}/files/extrapatch-configure \
 			${PORTSDIR}/devel/${_QT_RELNAME}/files/extrapatch-sync.profiles \
 			${_EXTRA_PATCHES_QT5}
 .    endif # ${_QT_VER:M5}
 .  endif #  ${_QT_DIST} == "base"
 
 # Override settings installed in qconfig.h and *.pri files. The flags will be
 # installed along with the port, but have to be passed as arguments while
 # building the port itself. Flags prefixed with "-" (e.g., "-CUPS" and "-cups")
 # are needed to disable some features.
 .  if !defined(${QT_MODNAME}) || empty(${QT_MODNAME})
 # Used for both qconfig-*.h and qt_config_*.pri; it can't be empty.
 QT_MODNAME=		${PORTNAME}
 .  endif
 QT_DEFINES?=		# For qconfig.h flags (without "QT_" prefix).
 QT_CONFIG?=		# For *.pri files QT_CONFIG flags.
 .  if ${QT_DEFINES}
 QMAKE_ARGS+=		DEFINES+="${QT_DEFINES:O:u:C/^([^-])/QT_\1/:C/^-/QT_NO_/:O}"
 .  endif #  ${QT_DEFINES}
 PKGDEINSTALL=		${WRKDIR}/pkg-deinstall
 PKGINSTALL=		${WRKDIR}/pkg-install
 .  if ${QT_CONFIG:N-*}
 QMAKE_ARGS+=		QT_CONFIG+="${QT_CONFIG:N-*:O:u}"
 .  endif
 .  if ${QT_CONFIG:M-*}
 QMAKE_ARGS+=		QT_CONFIG-="${QT_CONFIG:M-*:O:u:C/^-//}"
 .  endif
 
 PLIST_SUB+=		SHORTVER=${_QT_VERSION:R} \
 			FULLVER=${_QT_VERSION:C/-.*//}
 
 # Handle additional PLIST directories, which should only be used for Qt-dist ports.
 .  for dir in ETC
 # Export QT_ETCDIR.
 PLIST_SUB+=		QT_${dir}DIR="${QT_${dir}DIR_REL}"
 .  endfor
 
 .  if ${_QT_VER:M5}
 .    for dir in CMAKE
 # Export QT_CMAKEDIR.
 PLIST_SUB+=		QT_${dir}DIR="${QT_${dir}DIR_REL}"
 .    endfor
 .  endif
 
 .  if ${_QT_VER:M5}
 .    if ${_QT_DIST} == "base"
 # qtbase requires some tools to be symlinked to the build directory.
 _QT_TOOLS=		# empty
 .      if ${PORTNAME} != "qmake"
 _QT_TOOLS+=		${QMAKE}
 .      endif
 .      if ${PORTNAME} != "buildtools"
 _QT_TOOLS+=		${MOC} ${RCC}
 .      endif
 .      if ${PORTNAME} != "qdoc"
 _QT_TOOLS+=		qdoc
 .      endif
 .      if ${PORTNAME} != "dbus"
 _QT_TOOLS+=		qdbuscpp2xml qdbusxml2cpp
 .      endif
 .      if ${PORTNAME} != "widgets"
 _QT_TOOLS+=		${UIC}
 .      endif
 
 # The list of QtBase components that need to be linked into WRKSRC/lib for
 # other QtBase ports. See below.
 _QT5_BASE=		core dbus gui network sql widgets
 _QT5_ADDITIONAL_LINK?=	# Ensure definition
 
 .      if ${_QT_VER:M5}
 post-patch: gcc-post-patch
 gcc-post-patch:
 	${REINPLACE_CMD} 's|%%LOCALBASE%%|${LOCALBASE}|g' \
 		${WRKSRC}/mkspecs/common/gcc-base.conf \
 		${WRKSRC}/mkspecs/freebsd-g++/qmake.conf
 	${REINPLACE_CMD} 's|%%GCC_DEFAULT%%|${GCC_DEFAULT}|g' \
 		${WRKSRC}/mkspecs/common/gcc-base.conf \
 		${WRKSRC}/mkspecs/common/g++-base.conf \
 		${WRKSRC}/mkspecs/common/bsd/bsd.conf \
 		${WRKSRC}/mkspecs/freebsd-g++/qmake.conf
 .      endif
 
 pre-configure: qtbase-pre-configure
 qtbase-pre-configure:
 .      for tool in ${_QT_TOOLS}
 	@${TEST} -e ${QT_BINDIR}/${tool:T} && \
 		${LN} -sf ${QT_BINDIR}/${tool:T} ${CONFIGURE_WRKSRC}/bin/${tool:T} || \
 		${TRUE}
 .      endfor
 
 # The following is a fix for the inplace upgrade problem we faced (see
 # QTBUG-40825 and ports bugs 194088, 195105 and 198720) previously,
 # which previously was adressed by making sure, that ${LOCALBASE}/lib, which
 # would often gets added by pkgconf for the dependencies, was passed after
 # ${WRKSRC}/lib.
 # * We fix the inplace upgrade problem by moving the Qt5 libraries into
 #   ${LOCALBASE}/lib/qt5. Therefore a -L${LOCALBASE}/lib does no harm anymore.
 # * However, this means, that the ports belonging to the split up QtBase package
 #   now no longer can find their depending QtBase libraries. We fix this by
 #   linking these into ${CONFIGURE_WRKSRC}/lib if the given QtBase port depends
 #   on them.
 .      if ${_QT_DIST:Mbase}
 .        for basedep in ${_QT5_BASE}
 .          if ! empty(USE_QT:M${basedep})
 	${LN} -sf ${QT_LIBDIR}/${${basedep}_LIB} ${CONFIGURE_WRKSRC}/lib
 .          endif
 .        endfor
 .      endif
 
 #
 # **** THIS PART IS OBSOLETE FOR THE NEXT QT UPGRADE ****
 #
 # Add ${LOCALBASE}/lib to DEFAULT_LIBDIRS, which we use to filter out
 # certain paths from pkg-config calls (see the explanation in
 # devel/qt5/files/patch-configure) as well as for setting
 # QMAKE_DEFAULT_LIBDIR in mkspecs/qconfig.pri. Part of the solution for
 # ports/194088.
 post-patch: qtbase-post-patch
 qtbase-post-patch:
 	${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \
 		${WRKSRC}/mkspecs/common/bsd/bsd.conf \
 		${WRKSRC}/mkspecs/freebsd-clang/qmake.conf
 
 .      if ${PORTNAME} != "qmake"
 _QMAKE=			${CONFIGURE_WRKSRC}/bin/qmake
 .      endif
 .    endif
 
 
 pre-configure: qt5-pre-configure
 qt5-pre-configure:
 # Qt 5.3.2 introduced a check in mkspecs/features/create_cmake.prf that
 # requires tests/auto/cmake to be present, otherwise the configure stage will
 # fail.
 # Since we cannot extract tests/auto/cmake/ and exclude tests/ at the same
 # time, we have to disable the check in a cache file (the only way to get this
 # value through to the configure script in qtbase).
 	${MKDIR} ${CONFIGURE_WRKSRC}
 	${ECHO_CMD} 'CMAKE_MODULE_TESTS = -' > ${CONFIGURE_WRKSRC}/.qmake.cache
 
 	# configure will run syncqt.pl if it finds a .git entry in the working directory
 	touch ${WRKSRC}/.git
 	# As the patch collection was created after a version bump, all module verisions
 	# are tagged as 5.15.3
 	touch ${WRKSRC}/.qmake.conf # easier than to -f before the sed
 	${REINPLACE_CMD} -e '/MODULE_VERSION/s|5\.15\.[0-9]|${_QT_VERSION}|g' \
 		${WRKSRC}/.qmake.conf
 
 # **** THIS PART IS OBSOLETE FOR THE NEXT QT UPGRADE ****
 #
 # We piggyback on QMAKE_LIBDIR_FLAGS to make sure -L${WRKSRC}/lib is passed to
 # the linker before -L/usr/local/lib. By default, the opposite happens, which
 # is a problem when a Qt port is being upgraded, since an existing library
 # would end up being picked up instead of those built in ${WRKSRC}/lib. Since
 # qmake appends the value of QMAKE_LIBDIR to QMAKE_LIBDIR_FLAGS, we can use the
 # latter to get the linker path order right. qmake is smart enough to strip
 # occurrences of ${WRKSRC}/lib from .pc and .prl files when installing them.
 # See QTBUG-40825 and ports bugs 194088, 195105 and 198720.
 	${ECHO_CMD} 'QMAKE_LIBDIR_FLAGS = -L${CONFIGURE_WRKSRC}/lib' >> ${CONFIGURE_WRKSRC}/.qmake.cache
 	${ECHO_CMD} 'QMAKE_DEFAULT_LIBDIRS += ${LOCALBASE}/lib /usr/lib /lib' >> ${CONFIGURE_WRKSRC}/.qmake.cache
 	${ECHO_CMD} 'QMAKE_DEFAULT_INCDIRS += ${LOCALBASE}/include /usr/include' >> ${CONFIGURE_WRKSRC}/.qmake.cache
 
 # Allow linking of further libraries to the configure directory.
 .    if !empty(_QT5_ADDITIONAL_LINK)
 .      for dep in ${_QT5_ADDITIONAL_LINK}
 	${MKDIR} ${CONFIGURE_WRKSRC}/lib
 .        if ! empty(USE_QT:M${dep})
 	${LN} -sf ${QT_LIBDIR}/${qt-${dep}_LIB} ${CONFIGURE_WRKSRC}/lib
 .        endif
 .      endfor
 .    endif
 
 .    if ${QT_DEFINES:N-*}
 # There **are** defines, so we need to **add** this port to the
 # qconfig-modules.h header; make @need_add empty and comment out
 # the @need_remove lines in the script (see below in qt-post-install).
 # If there are no defines, do it the other way around.
 _sub_need_add=
 _sub_need_remove=	\#\#
 .    else
 _sub_need_add=		\#\#
 _sub_need_remove=
 .    endif
 # If a port installs Qt version-specific binaries (e.g. "designer" which
 # existed as a Qt4 application and exists as a Qt5 application and will
 # probably be a Qt6 application) the port should set `QT_BINARIES=yes`.
 .    if defined(QT_BINARIES)
 _sub_need_bin=
 .    else
 _sub_need_bin=		\#\#
 .    endif
 .    if ${QT_MODNAME} == core
 # QtCore (e.g. devel/qt5-core) is the one that starts the header,
 # and is also the one that can clean it up when deinstalled.
 _sub_need_clean=
 .    else
 _sub_need_clean=	\#\#
 .    endif
 post-install: qt-post-install
 qt-post-install:
 # We can't use SUB_FILES with the shared pkg-change.in.
 # We need it to be a script instead of a group of @unexecs.
 # Do two steps of processing -- introducing the Qt variables,
 # and replacing the @tags with comment (or nothing) characters
 # according to the port's settings -- in one sed and write
 # to pkg-change.tmp. Then split it up and minify for the
 # install and deinstall step.
 	@${SED} -e 's,%%QT_MODNAME%%,${QT_MODNAME},g' \
 		-e 's,%%QT_INCDIR%%,${QT_INCDIR},g' \
 		-e 's,@need_add,${_sub_need_add},' \
 		-e 's,@need_remove,${_sub_need_remove},' \
 		-e 's,@need_clean,${_sub_need_clean},' \
 		-e 's,@need_bin,${_sub_need_bin},' \
 		${PORTSDIR}/devel/${_QT_RELNAME}/${FILESDIR:T}/pkg-change.in > \
 		${WRKDIR}/pkg-change.tmp
 	@${SED} -e 's,@install,,' -e 's,@deinstall,##,' ${WRKDIR}/pkg-change.tmp | ${SED} -e '/##/d' > ${PKGINSTALL}
 	@${SED} -e 's,@install,##,' -e 's,@deinstall,,' ${WRKDIR}/pkg-change.tmp | ${SED} -e '/##/d' > ${PKGDEINSTALL}
 	# Drop all leading spaces in the script, to minify
 	@${REINPLACE_CMD} 's/^  *//' ${PKGINSTALL} ${PKGDEINSTALL}
 .    if ${QT_DEFINES:N-*}
 	@${MKDIR} ${STAGEDIR}${QT_INCDIR}/QtCore/modules
 	@${ECHO_CMD} -n \
 		> ${STAGEDIR}${QT_INCDIR}/QtCore/modules/qconfig-${QT_MODNAME}.h
 .      for def in ${QT_DEFINES:N-*:O:u:C/=.*$//}
 	@${ECHO_CMD} "#if !defined(QT_${def}) && !defined(QT_NO_${def})" \
 		>> ${STAGEDIR}${QT_INCDIR}/QtCore/modules/qconfig-${QT_MODNAME}.h
 	${ECHO_CMD} "# define QT_${def}" \
 		>> ${STAGEDIR}${QT_INCDIR}/QtCore/modules/qconfig-${QT_MODNAME}.h
 	@${ECHO_CMD} "#endif" \
 		>> ${STAGEDIR}${QT_INCDIR}/QtCore/modules/qconfig-${QT_MODNAME}.h
 	@${ECHO_CMD} \
 		>> ${STAGEDIR}${QT_INCDIR}/QtCore/modules/qconfig-${QT_MODNAME}.h
 .      endfor
 	@${ECHO_CMD} "${PREFIX}/${QT_INCDIR_REL}/QtCore/modules/qconfig-${QT_MODNAME}.h" \
 		>> ${TMPPLIST}
 .    endif # ${QT_DEFINES:N-*}
 .    if ${QT_CONFIG:N-*}
 	@${MKDIR} ${STAGEDIR}${QT_MKSPECDIR}/modules
 	${ECHO_CMD} "QT_CONFIG += ${QT_CONFIG:N-*:O:u}" \
 		> ${STAGEDIR}${QT_MKSPECDIR}/modules/qt_config_${QT_MODNAME}.pri
 	@${ECHO_CMD} "${PREFIX}/${QT_MKSPECDIR_REL}/modules/qt_config_${QT_MODNAME}.pri" \
 		>> ${TMPPLIST}
 .    endif # ${QT_CONFIG:N-*}
 .  endif # M5
 
 .  if ${_QT_VER:M6}
 post-stage:	qt6-post-stage
 # Clean-up of empty directories, as we install
 # * cmake to ${LOCALBASE}/lib/cmake not ${QT_LIBDIR}/cmake.
 # * pkgconfig to ${LOCALBASE}/libexec/pkgconfig not ${QT_LIBDIR}/pkgconfig
 qt6-post-stage:
 	${RM} -r ${STAGEDIR}${QT_LIBDIR}/cmake
 	${RM} -r ${STAGEDIR}${QT_LIBDIR}/pkgconfig
 .  endif
 
 qt-create-kde-distfile:
 	${MKDIR} ${DISTDIR}/${DIST_SUBDIR}
 	${SH} ${PORTSDIR}/devel/${_QT_RELNAME}/files/create_kde-qt_release.sh \
 		${_QT_DIST} \
 		${DISTDIR}/${DIST_SUBDIR} \
 		${_KDE_${_QT_DIST}_VERSION} \
 		${_KDE_${_QT_DIST}_ORIGIN_TAG}
 
 .endif # defined(_QT_DIST_MK_INCLUDED)
 
diff --git a/www/qt5-webengine/Makefile b/www/qt5-webengine/Makefile
index 780c8d924d23..1868b13c8b96 100644
--- a/www/qt5-webengine/Makefile
+++ b/www/qt5-webengine/Makefile
@@ -1,157 +1,168 @@
 # QtWebEngine itself is a very thin layer of Qt code on top of a large part of
 # Chromium (everything up to the content/ layer). As such, most of the work in
 # this port revolves around taming Chromium and getting it to build on FreeBSD.
 # While it does build at the moment, there are several items that should be
 # investigated or improved:
 # - We are using several stub files, especially in Chromium's base/ and net/
 #   layers. We should look at implementing the missing bits instead.
 # - We are currently not using any sandboxing mechanism.
 # - We need to see if more "use_system_<FOO>" flags can be passed.
 # - The process of porting QtWebEngine needs to be documented so we can move to
 #   newer releases more easily.
 #
 # Also note that, due to the insane amount of patches this port needs, it tends
 # to lag behind the rest of the official Qt5 ones, which is why we set
 # QT5_VERSION and DISTINFO_FILE here.
 
 PORTNAME=	webengine
 DISTVERSION=	${QT5_VERSION}
-PORTREVISION=	8
+PORTREVISION=	0
 CATEGORIES=	www
 PKGNAMEPREFIX=	qt5-
 
 MAINTAINER=	kde@FreeBSD.org
 COMMENT=	Qt 5 library to render web content
 
 BUILD_DEPENDS=	bison:devel/bison \
-		yasm:devel/yasm \
 		${LOCALBASE}/include/linux/input.h:devel/evdev-proto \
 		${LOCALBASE}/include/linux/videodev2.h:multimedia/v4l_compat
 LIB_DEPENDS=	libavcodec.so:multimedia/ffmpeg \
 		libdbus-1.so:devel/dbus \
 		libdouble-conversion.so:devel/double-conversion \
 		libevent.so:devel/libevent \
 		libfontconfig.so:x11-fonts/fontconfig \
 		libfreetype.so:print/freetype2 \
 		libharfbuzz.so:print/harfbuzz \
 		libjsoncpp.so:devel/jsoncpp \
 		liblcms2.so:graphics/lcms2 \
 		libnspr4.so:devel/nspr \
 		libnss3.so:security/nss \
+		libopenh264.so:multimedia/openh264 \
 		libopus.so:audio/opus \
 		libpci.so:devel/libpci \
 		libpng.so:graphics/png \
 		libre2.so:devel/re2 \
 		libsnappy.so:archivers/snappy \
 		libvpx.so:multimedia/libvpx \
 		libwebp.so:graphics/webp
 
 DISTINFO_FILE=	${.CURDIR}/distinfo
-QT5_VERSION=	5.15.2
+QT5_VERSION=	5.15.8
+
+# Add extra-patch-no-mempcpy-nasm only when there's no mempcpy() in base.
+# Nested variable expansion avoids executing the test when not needed for
+# expanding EXTRA_PATCHES.
+# mempcpy was introduced in ee37f64cf875255338f917a9da76c643cf59786c
+EXTRA_PATCHES+=	${"${:!${GREP} mempcpy ${CROSS_SYSROOT}/usr/include/string.h \
+		|| ${TRUE}!}" == "":?${PATCHDIR}/extra-patch-no-mempcpy-nasm:}
+
+WRKSRC=		${WRKDIR}/qtwebengine-everywhere-src-${DISTVERSION}
 
 OPTIONS_SINGLE=		AUDIO
 OPTIONS_SINGLE_AUDIO=	ALSA PULSEAUDIO SNDIO
 OPTIONS_DEFAULT=	ALSA
 
 AUDIO_DESC=		Audio backend
 
 # Need the alsa plugins to get sound at runtime, otherwise messages
 # that the pcm_oss plugin can't be opened.
 ALSA_LIB_DEPENDS=	libasound.so:audio/alsa-lib
 ALSA_RUN_DEPENDS=	alsa-plugins>=0:audio/alsa-plugins
 ALSA_VARS=		QMAKE_CONFIGURE_ARGS+=-alsa
 ALSA_VARS_OFF=		QMAKE_CONFIGURE_ARGS+=-no-alsa
 PULSEAUDIO_LIB_DEPENDS=	libpulse.so:audio/pulseaudio
 PULSEAUDIO_VARS=	QMAKE_CONFIGURE_ARGS+=-pulseaudio
 PULSEAUDIO_VARS_OFF=	QMAKE_CONFIGURE_ARGS+=-no-pulseaudio
 SNDIO_LIB_DEPENDS=	libsndio.so:audio/sndio
 SNDIO_VARS=		QMAKE_CONFIGURE_ARGS+=-sndio
 SNDIO_VARS_OFF=		QMAKE_CONFIGURE_ARGS+=-no-sndio
 
 # We pass `norecursive' to USES=qmake because src/plugins/plugins.pro checks
 # whether webenginewidgets is available, which fails when qmake processes all
 # .pro files at once.
-USES=		gl gnome gperf jpeg ninja:build pkgconfig python:2.7,build \
-		qmake:norecursive,outsource qt-dist:5,webengine shebangfix xorg
+USES=		gl gnome gperf jpeg minizip ninja:build nodejs:build,lts \
+		pkgconfig python:2.7,build qmake:norecursive,outsource \
+		qt-dist:5,webengine shebangfix xorg
 USE_GL=		gl
 USE_GNOME=	glib20 libxml2 libxslt
 USE_QT=		core declarative gui location network printsupport \
 		webchannel widgets \
 		buildtools:build designer:build qmake:build
-USE_XORG=	x11 xcb xcomposite xcursor xdamage xext xfixes xi xorgproto \
-		xrandr xrender xscrnsaver xtst
+USE_XORG=	x11 xcb xcomposite xcursor xdamage xext xfixes xi xkbfile \
+		xorgproto xrandr xrender xscrnsaver xtst
 
 QMAKE_CONFIGURE_ARGS=	-proprietary-codecs -system-ffmpeg
 
 # We could just set it to an empty string as well. "all" does not account for
 # dependencies correctly in the generated Makefiles, use the right target here.
 ALL_TARGET=	first
 
 # We need ar(1) from ports because the Chromium code uses the @file syntax.
 # We then need to ensure ld(1) from ports is used because of the archives ar(1)
 # generated.
 USE_BINUTILS=	yes
 CC+=		"-B${LOCALBASE}/bin"
 CXX+=		"-B${LOCALBASE}/bin"
 
 # The build system reads the environment variable $NINJA_PATH to decide whether
 # to boostrap ninja or not (and also to invoke it afterwards). CC and CXX are
 # read by some Chromium code to determine which compiler to invoke when running
 # some configuration tests.
 # Since we use USES=qmake:norecursive, we also need to pass some variables to
 # MAKE_ENV because part of the configuration process happens during the build.
 CONFIGURE_ENV+=	NINJAFLAGS="-j${MAKE_JOBS_NUMBER}" \
 		NINJA_PATH="${LOCALBASE}/bin/ninja"  \
 		PATH=${CONFIGURE_WRKSRC}/bin:${LOCALBASE}/bin:${PATH}
 MAKE_ENV+=	CC="${CC}" CXX="${CXX}"			\
 		C_INCLUDE_PATH=${LOCALBASE}/include	\
 		CPLUS_INCLUDE_PATH=${LOCALBASE}/include	\
 		${CONFIGURE_ENV}
 
 QT_BINARIES=	yes
 
 .include <bsd.port.pre.mk>
 
 .if ${ARCH:Mmips*} || ${ARCH:Mpowerpc*} || ${ARCH} == sparc64
 PLIST_SUB+=	BE="" LE="@comment "
 .else
 PLIST_SUB+=	BE="@comment " LE=""
 .endif
 
 post-extract:
 # Install FreeBSD's freebsd.pri file.
 	${CP} ${FILESDIR}/freebsd.pri ${WRKSRC}/src/buildtools/config/freebsd.pri
 
 post-extract-SNDIO-on:
 	@cd ${WRKSRC}/src/3rdparty/chromium/media/audio && ${MKDIR} sndio openbsd
 	@${CP} ${FILESDIR}/sndio_*put.* \
 		${WRKSRC}/src/3rdparty/chromium/media/audio/sndio
 	@${CP} ${FILESDIR}/audio_manager_openbsd.* \
 		${WRKSRC}/src/3rdparty/chromium/media/audio/openbsd
 
 post-patch:
 	@${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|' \
 		${WRKSRC}/src/3rdparty/chromium/base/linux_util.cc \
+		${WRKSRC}/src/3rdparty/chromium/base/test/BUILD.gn \
 		${WRKSRC}/src/3rdparty/chromium/build/toolchain/gcc_toolchain.gni \
 		${WRKSRC}/src/3rdparty/chromium/chrome/common/chrome_paths.cc \
 		${WRKSRC}/src/3rdparty/chromium/third_party/pdfium/core/fxge/fx_ge_linux.cpp \
-		${WRKSRC}/src/3rdparty/chromium/third_party/pdfium/xfa/fgas/font/cfx_fontsourceenum_file.cpp \
 		${WRKSRC}/src/3rdparty/gn/build/gen.py
 
 .if ${ARCH:Mmips*} || ${ARCH:Mpowerpc*} || ${ARCH} == sparc64
 	@${REINPLACE_CMD} -e 's/icudtl.dat/icudtb.dat/' \
 		${WRKSRC}/src/core/core_module.pro
 .endif
 
 pre-configure:
 # Link in ${PYTHON_CMD} to ${CONFIGURE_WRKSRC}/bin -- the scripts hardcode 'python'
 # in too many places to reasonably patch. So just link in ${PYTHON_CMD} to work around
 # $LOCALBASE/bin/python being python3 if the default versions is set to 3.x.
 	${MKDIR} ${CONFIGURE_WRKSRC}/bin && ${LN} -s ${PYTHON_CMD} ${CONFIGURE_WRKSRC}/bin/python
 # Unbundle a few dependencies.
-	${PYTHON_CMD} ${WRKSRC}/src/3rdparty/chromium/build/linux/unbundle/replace_gn_files.py \
-		--system-libraries libwebp libxml libxslt yasm
+	cd ${WRKSRC}/src/3rdparty/chromium && ${SETENV} ${CONFIGURE_ENV} ${PYTHON_CMD} \
+		./build/linux/unbundle/replace_gn_files.py --system-libraries\
+		fontconfig freetype harfbuzz-ng libdrm libevent libpng libwebp libxml libxslt openh264 opus || ${FALSE}
 # Rerun syncqt.pl -- otherwise the resulting package misses some forwarding headers.
 	cd ${WRKSRC} && ${QT_BINDIR}/syncqt.pl -version ${QT5_VERSION}
 
 .include <bsd.port.post.mk>
diff --git a/www/qt5-webengine/distinfo b/www/qt5-webengine/distinfo
index d08fca4450e8..40537861d0f6 100644
--- a/www/qt5-webengine/distinfo
+++ b/www/qt5-webengine/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1606050276
-SHA256 (KDE/Qt/5.15.2/qtwebengine-everywhere-src-5.15.2.tar.xz) = c8afca0e43d84f7bd595436fbe4d13a5bbdb81ec5104d605085d07545b6f91e0
-SIZE (KDE/Qt/5.15.2/qtwebengine-everywhere-src-5.15.2.tar.xz) = 280142544
+TIMESTAMP = 1673702204
+SHA256 (KDE/Qt/5.15.8/qtwebengine-everywhere-opensource-src-5.15.8.tar.xz) = 4f56dcab592a8e44c93951fb9d4840b5f73fd80ec2776979d38e42abca2b61e3
+SIZE (KDE/Qt/5.15.8/qtwebengine-everywhere-opensource-src-5.15.8.tar.xz) = 316379144
diff --git a/www/qt5-webengine/files/extra-patch-no-mempcpy-nasm b/www/qt5-webengine/files/extra-patch-no-mempcpy-nasm
new file mode 100644
index 000000000000..b9b39c0d846a
--- /dev/null
+++ b/www/qt5-webengine/files/extra-patch-no-mempcpy-nasm
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/third_party/nasm/config/config-linux.h.orig	2022-06-08 06:40:31 UTC
++++ src/3rdparty/chromium/third_party/nasm/config/config-linux.h
+@@ -336,7 +336,7 @@
+ #define HAVE_MEMORY_H 1
+ 
+ /* Define to 1 if you have the `mempcpy' function. */
+-#define HAVE_MEMPCPY 1
++/* #undef HAVE_MEMPCPY */
+ 
+ /* Define to 1 if you have a working `mmap' system call. */
+ #define HAVE_MMAP 1
diff --git a/www/qt5-webengine/files/freebsd.pri b/www/qt5-webengine/files/freebsd.pri
index 873da96cd3f5..2cbfe4735b5a 100644
--- a/www/qt5-webengine/files/freebsd.pri
+++ b/www/qt5-webengine/files/freebsd.pri
@@ -1,11 +1,6 @@
 include(linux.pri)
 
 gn_args +=   enable_basic_printing=true	\
              enable_print_preview=true	\
              use_dbus=true \
              use_udev=false
-
-# Once the port works better, we can think about readding the diverse `use_system_<foo>`
-# for bundled libraries.
-# For now, only add very few system libraries.
-gn_args += use_system_yasm=true
diff --git a/www/qt5-webengine/files/patch-clang b/www/qt5-webengine/files/patch-clang
deleted file mode 100644
index 6d3310806100..000000000000
--- a/www/qt5-webengine/files/patch-clang
+++ /dev/null
@@ -1,40 +0,0 @@
---- src/3rdparty/chromium/base/strings/safe_sprintf_unittest.cc.orig	2018-11-13 18:25:11 UTC
-+++ src/3rdparty/chromium/base/strings/safe_sprintf_unittest.cc
-@@ -730,6 +730,7 @@ TEST(SafeSPrintfTest, EmbeddedNul) {
- }
- 
- TEST(SafeSPrintfTest, EmitNULL) {
-+/* Avoid compiler error: http://pastebin.com/1edWUE84
-   char buf[40];
- #if defined(__GNUC__)
- #pragma GCC diagnostic push
-@@ -741,6 +742,7 @@ TEST(SafeSPrintfTest, EmitNULL) {
-   EXPECT_EQ("0x0", std::string(buf));
-   EXPECT_EQ(6, SafeSPrintf(buf, "%s", NULL));
-   EXPECT_EQ("<NULL>", std::string(buf));
-+*/
- #if defined(__GCC__)
- #pragma GCC diagnostic pop
- #endif
---- src/3rdparty/chromium/base/threading/thread_local_storage_unittest.cc.orig	2018-11-13 18:25:11 UTC
-+++ src/3rdparty/chromium/base/threading/thread_local_storage_unittest.cc
-@@ -86,7 +86,7 @@ class ThreadLocalStorageRunner : public DelegateSimple
- void ThreadLocalStorageCleanup(void *value) {
-   int *ptr = reinterpret_cast<int*>(value);
-   // Destructors should never be called with a NULL.
--  ASSERT_NE(reinterpret_cast<int*>(NULL), ptr);
-+  ASSERT_NE(static_cast<int*>(NULL), ptr);
-   if (*ptr == kFinalTlsValue)
-     return;  // We've been called enough times.
-   ASSERT_LT(kFinalTlsValue, *ptr);
---- src/3rdparty/chromium/media/audio/audio_output_proxy_unittest.cc.orig	2018-11-13 18:25:11 UTC
-+++ src/3rdparty/chromium/media/audio/audio_output_proxy_unittest.cc
-@@ -410,7 +410,7 @@ class AudioOutputProxyTest : public testing::Test {
-     // |stream| is closed at this point. Start() should reopen it again.
-     EXPECT_CALL(manager(), MakeAudioOutputStream(_, _, _))
-         .Times(2)
--        .WillRepeatedly(Return(reinterpret_cast<AudioOutputStream*>(NULL)));
-+        .WillRepeatedly(Return(static_cast<AudioOutputStream*>(NULL)));
- 
-     EXPECT_CALL(callback_, OnError()).Times(2);
- 
diff --git a/www/qt5-webengine/files/patch-mkspecs_features_functions.prf b/www/qt5-webengine/files/patch-mkspecs_features_functions.prf
index d8a05ec83133..7410d6d6af83 100644
--- a/www/qt5-webengine/files/patch-mkspecs_features_functions.prf
+++ b/www/qt5-webengine/files/patch-mkspecs_features_functions.prf
@@ -1,37 +1,37 @@
---- mkspecs/features/functions.prf.orig	2020-11-07 01:22:36 UTC
+--- mkspecs/features/functions.prf.orig	2021-12-15 16:12:54 UTC
 +++ mkspecs/features/functions.prf
 @@ -84,6 +84,10 @@ defineReplace(gnWebEngineArgs) {
          include($$QTWEBENGINE_ROOT/src/buildtools/config/windows.pri)
          include($$QTWEBENGINE_ROOT/src/core/config/windows.pri)
      }
 +    freebsd {
 +        include($$QTWEBENGINE_ROOT/src/buildtools/config/freebsd.pri)
 +        include($$QTWEBENGINE_ROOT/src/core/config/linux.pri)
 +    }
      isEmpty(gn_args): error(No gn_args found please make sure you have valid configuration.)
      return($$gn_args)
  }
 @@ -93,6 +97,7 @@ defineReplace(gnPdfArgs) {
      macos: include($$QTWEBENGINE_ROOT/src/buildtools/config/mac_osx.pri)
      ios: include($$QTWEBENGINE_ROOT/src/pdf/config/ios.pri)
      win32: include($$QTWEBENGINE_ROOT/src/buildtools/config/windows.pri)
 +    freebsd: include($$QTWEBENGINE_ROOT/src/buildtools/config/freebsd.pri)
      include($$QTWEBENGINE_ROOT/src/pdf/config/common.pri)
      isEmpty(gn_args): error(No gn_args found please make sure you have valid configuration.)
      return($$gn_args)
-@@ -106,6 +111,7 @@ defineReplace(gnArch) {
-     contains(qtArch, "arm64"): return(arm64)
+@@ -107,6 +112,7 @@ defineReplace(gnArch) {
      contains(qtArch, "mips"): return(mipsel)
      contains(qtArch, "mips64"): return(mips64el)
+     contains(qtArch, "mips64el"): return(mips64el)
 +    contains(qtArch, "power64"): return(ppc64)
      return(unknown)
  }
  
-@@ -113,6 +119,7 @@ defineReplace(gnOS) {
+@@ -114,6 +120,7 @@ defineReplace(gnOS) {
      macos: return(mac)
      win32: return(win)
      linux: return(linux)
 +    freebsd: return(freebsd)
      error(Unsupported platform)
      return(unknown)
  }
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_BUILD.gn
index d0328ec408a0..be4c4ae2a7fb 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_BUILD.gn
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_BUILD.gn
@@ -1,87 +1,96 @@
---- src/3rdparty/chromium/BUILD.gn.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/BUILD.gn.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/BUILD.gn
-@@ -419,7 +419,7 @@ group("gn_all") {
+@@ -423,7 +423,7 @@ group("gn_all") {
      ]
    }
  
--  if (is_linux || is_android) {
-+  if ((is_linux && !is_bsd) || is_android) {
+-  if (is_linux || is_chromeos || is_android) {
++  if ((is_linux && !is_bsd) || is_chromeos || is_android) {
      deps += [
        "//third_party/breakpad:breakpad_unittests",
        "//third_party/breakpad:core-2-minidump",
-@@ -460,8 +460,6 @@ group("gn_all") {
+@@ -464,8 +464,6 @@ group("gn_all") {
        "//net:disk_cache_memory_test",
        "//net:quic_client",
        "//net:quic_server",
 -      "//sandbox/linux:chrome_sandbox",
 -      "//sandbox/linux:sandbox_linux_unittests",
        "//testing:empty_main",
      ]
  
-@@ -516,10 +514,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",
 -        "//courgette:courgette",
 -        "//courgette:courgette_fuzz",
 -        "//courgette:courgette_minimal_tool",
 -        "//courgette:courgette_unittests",
          "//media/cast:generate_barcode_video",
          "//media/cast:generate_timecode_audio",
          "//net:crash_cache",
-@@ -592,10 +586,6 @@ group("gn_all") {
+@@ -595,10 +589,6 @@ group("gn_all") {
        "//mojo:mojo_perftests",
        "//services/service_manager/public/cpp",
        "//testing/gmock:gmock_main",
 -      "//third_party/breakpad:dump_syms($host_toolchain)",
 -      "//third_party/breakpad:microdump_stackwalk($host_toolchain)",
 -      "//third_party/breakpad:minidump_dump($host_toolchain)",
 -      "//third_party/breakpad:minidump_stackwalk($host_toolchain)",
      ]
  
      if (!is_android) {
-@@ -669,7 +659,7 @@ group("gn_all") {
+@@ -676,7 +666,7 @@ group("gn_all") {
          host_os == "win" && !use_qt) {
        deps += [ "//chrome/test/mini_installer:mini_installer_tests" ]
      }
 -  } else if (!is_android && !is_ios && !is_fuchsia && !is_win) {
 +  } else if (!is_android && !is_ios && !is_fuchsia && !is_win && !is_bsd) {
      deps += [ "//third_party/breakpad:symupload($host_toolchain)" ]
    }
  
-@@ -802,7 +792,6 @@ group("gn_all") {
+@@ -691,7 +681,7 @@ group("gn_all") {
+     }
+   }
+ 
+-  if (is_mac || is_win || is_android || (is_linux && !is_chromeos)) {
++  if (is_mac || is_win || is_android || (is_linux && !is_chromeos && !is_bsd)) {
+     deps += [
+       "//third_party/crashpad/crashpad:crashpad_tests",
+       "//third_party/crashpad/crashpad/handler:crashpad_handler",
+@@ -810,7 +800,6 @@ group("gn_all") {
        "//chrome/browser/vr:vr_common_perftests",
        "//chrome/browser/vr:vr_common_unittests",
        "//chrome/browser/vr:vr_pixeltests",
 -      "//tools/perf/contrib/vr_benchmarks:vr_perf_tests",
      ]
-     if (is_desktop_linux && use_ozone) {
-       deps += [ "//chrome/browser/vr/testapp:vr_testapp" ]
-@@ -1085,7 +1074,7 @@ if (!is_ios && !use_qt) {
-       ]
+     if (is_android) {
+       deps += [ "//chrome/browser/android/vr:vr_android_unittests" ]
+@@ -1103,7 +1092,7 @@ if (!is_ios && !use_qt) {
+       data_deps += [ "//content/web_test:web_test_common_mojom_js_data_deps" ]
      }
  
 -    if (!is_win && !is_android) {
 +    if (!is_win && !is_android && !is_bsd) {
        data_deps +=
            [ "//third_party/breakpad:minidump_stackwalk($host_toolchain)" ]
      }
-@@ -1094,7 +1083,7 @@ if (!is_ios && !use_qt) {
+@@ -1112,7 +1101,7 @@ if (!is_ios && !use_qt) {
        data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ]
      }
  
--    if (is_linux) {
-+    if (is_linux && !is_bsd) {
+-    if (is_linux || is_chromeos) {
++    if ((is_linux && !is_bsd) || is_chromeos) {
        data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ]
      }
  
-@@ -1286,9 +1275,6 @@ group("chromium_builder_perf") {
+@@ -1308,9 +1297,6 @@ group("chromium_builder_perf") {
  
      if (is_win) {
        data_deps += [ "//chrome/installer/mini_installer:mini_installer" ]
 -    } else {
 -      data_deps +=
 -          [ "//third_party/breakpad:minidump_stackwalk($host_toolchain)" ]
      }
      if (is_win || is_android) {
        data_deps += [
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_BUILD.gn
index 552ca411ae1d..166ea3ca28e4 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_BUILD.gn
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_BUILD.gn
@@ -1,122 +1,111 @@
---- src/3rdparty/chromium/base/BUILD.gn.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/base/BUILD.gn.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/BUILD.gn
-@@ -59,7 +59,7 @@ declare_args() {
+@@ -54,7 +54,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.
-@@ -929,7 +929,7 @@ jumbo_component("base") {
+@@ -886,7 +886,7 @@ jumbo_component("base") {
        "timer/hi_res_timer_manager_posix.cc",
      ]
  
--    if (!is_nacl && !is_mac && !is_ios) {
-+    if (!is_nacl && !is_mac && !is_ios && !is_bsd) {
+-    if (!is_nacl && !is_apple) {
++    if (!is_nacl && !is_apple && !is_bsd) {
        sources += [
-         "profiler/stack_copier_signal.cc",
-         "profiler/stack_copier_signal.h",
-@@ -938,6 +938,12 @@ jumbo_component("base") {
+         "cpu_affinity_posix.cc",
+         "cpu_affinity_posix.h",
+@@ -897,6 +897,11 @@ jumbo_component("base") {
          "profiler/thread_delegate_posix.h",
        ]
      }
-+
 +    if (is_bsd) {
 +      sources += [
 +        "profiler/stack_sampler_posix.cc",
 +      ]
 +    }
    }
  
-   jumbo_excluded_sources = []
-@@ -1239,7 +1245,13 @@ jumbo_component("base") {
+   jumbo_excluded_sources = [
+@@ -1213,7 +1218,6 @@ jumbo_component("base") {
        "process/process_metrics_linux.cc",
        "threading/platform_thread_linux.cc",
      ]
 -    jumbo_excluded_sources += [ "process/memory_linux.cc" ]
-+    # Omit this because it will be excluded via "is_bsd" further down in
-+    # this file
-+    # jumbo_excluded_sources += [ "process/memory_linux.cc" ]
-+    # ...but remove the following files from jumbo merge otherwise it will
-+    # emit errors of redefined variables
-+    jumbo_excluded_sources += [ "metrics/histogram.cc" ]
-+    jumbo_excluded_sources += [ "metrics/sparse_histogram.cc" ]
    }
  
    if (!is_nacl) {
-@@ -1324,7 +1336,7 @@ jumbo_component("base") {
-   # Needed for <atomic> if using newer C++ library than sysroot, except if
-   # building inside the cros_sdk environment - use host_toolchain as a
-   # more robust check for this.
--  if (!use_sysroot && (is_android || (is_linux && !is_chromecast && !use_qt)) &&
-+  if (!use_sysroot && (is_android || (is_linux && !is_chromecast && !use_qt) && !is_clang) &&
-       host_toolchain != "//build/toolchain/cros:host") {
-     libs += [ "atomic" ]
-   }
-@@ -1350,7 +1362,7 @@ jumbo_component("base") {
-         "allocator/allocator_shim_override_glibc_weak_symbols.h",
-       ]
-       deps += [ "//base/allocator:tcmalloc" ]
--    } else if (is_linux && use_allocator == "none") {
-+    } else if ((is_linux && !is_bsd) && use_allocator == "none") {
-       sources += [ "allocator/allocator_shim_default_dispatch_to_glibc.cc" ]
-     } else if (is_android && use_allocator == "none") {
-       sources += [
-@@ -1947,6 +1959,33 @@ jumbo_component("base") {
+@@ -1355,7 +1359,7 @@ jumbo_component("base") {
+           "allocator/allocator_shim_default_dispatch_to_mac_zoned_malloc.cc",
+         ]
+       }
+-      if (is_chromeos || is_linux) {
++      if ((is_chromeos || is_linux) && !is_bsd) {
+         sources += [ "allocator/allocator_shim_default_dispatch_to_glibc.cc" ]
+       }
+       if (is_win) {
+@@ -1826,7 +1830,7 @@ jumbo_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",
+@@ -1982,6 +1986,34 @@ jumbo_component("base") {
      }
    }
  
 +  if (is_bsd) {
 +    sources -= [
 +      "files/file_path_watcher_linux.cc",
 +      "files/file_util_linux.cc",
 +      "process/memory_linux.cc",
 +      "process/process_handle_linux.cc",
 +      "process/process_iterator_linux.cc",
 +      "process/process_metrics_linux.cc",
 +      "system/sys_info_linux.cc"
 +    ]
 +    sources += [
 +      "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",
 +      "process/process_metrics_freebsd.cc",
 +      "system/sys_info_freebsd.cc",
 +    ]
 +    libs = [
 +      "execinfo", # logging.cc
 +      "kvm",      # process_metrics_freebsd
 +      "util"      # process_metrics_freebsd
 +    ]
 +  }
++
 +
    # iOS
    if (is_ios) {
      sources -= [
-@@ -2903,7 +2942,7 @@ test("base_unittests") {
-       "posix/unix_domain_socket_unittest.cc",
-       "task/thread_pool/task_tracker_posix_unittest.cc",
+@@ -3095,7 +3127,7 @@ test("base_unittests") {
      ]
--    if (!is_nacl && !is_mac && !is_ios) {
-+    if (!is_nacl && !is_mac && !is_ios && !is_bsd) {
-       sources += [ "profiler/stack_copier_signal_unittest.cc" ]
-     }
    }
-@@ -3092,6 +3131,12 @@ test("base_unittests") {
  
-     manifest = "//build/config/fuchsia/tests.cmx"
+-  if (is_linux || is_chromeos) {
++  if ((is_linux || is_chromeos) && !is_bsd) {
+     sources += [ "debug/proc_maps_linux_unittest.cc" ]
    }
-+
-+  if (is_bsd) {
-+    sources -= [
-+      "debug/proc_maps_linux_unittest.cc",
-+    ]
-+  } 
  
-   if (!is_fuchsia && !is_ios) {
-     sources += [ "files/file_locking_unittest.cc" ]
+@@ -3136,7 +3168,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",
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_allocator_allocator__shim.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_allocator_allocator__shim.cc
deleted file mode 100644
index 1e77cff619cf..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_allocator_allocator__shim.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/3rdparty/chromium/base/allocator/allocator_shim.cc.orig	2019-11-27 21:12:25 UTC
-+++ src/3rdparty/chromium/base/allocator/allocator_shim.cc
-@@ -70,7 +70,7 @@ inline const base::allocator::AllocatorDispatch* GetCh
-   // Unfortunately due to that bug NoBarrier_Load() is mistakenly fully
-   // barriered on Linux+Clang, and that causes visible perf regressons.
-   return reinterpret_cast<const base::allocator::AllocatorDispatch*>(
--#if defined(OS_LINUX) && defined(__clang__)
-+#if (defined(OS_BSD) || defined(OS_LINUX)) && defined(__clang__)
-       *static_cast<const volatile base::subtle::AtomicWord*>(&g_chain_head)
- #else
-       base::subtle::NoBarrier_Load(&g_chain_head)
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_allocator_allocator__shim__default__dispatch__to__glibc.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_allocator_allocator__shim__default__dispatch__to__glibc.cc
index b1f7257651b2..ac4d249046da 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_allocator_allocator__shim__default__dispatch__to__glibc.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_allocator_allocator__shim__default__dispatch__to__glibc.cc
@@ -1,76 +1,76 @@
---- src/3rdparty/chromium/base/allocator/allocator_shim_default_dispatch_to_glibc.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/base/allocator/allocator_shim_default_dispatch_to_glibc.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/allocator/allocator_shim_default_dispatch_to_glibc.cc
-@@ -5,18 +5,28 @@
- #include "base/allocator/allocator_shim.h"
+@@ -6,18 +6,28 @@
+ #include "base/compiler_specific.h"
  
  #include <dlfcn.h>
 -#include <malloc.h>
 +#include <stdio.h>
 +#include <stdlib.h>
 +#include <malloc_np.h>
  
  // This translation unit defines a default dispatch for the allocator shim which
  // routes allocations to libc functions.
 -// The code here is strongly inspired from tcmalloc's libc_override_glibc.h.
 +// The code here is strongly inspired from tcmalloc's override_glibc.h.
  
  extern "C" {
 -void* __libc_malloc(size_t size);
 -void* __libc_calloc(size_t n, size_t size);
 -void* __libc_realloc(void* address, size_t size);
 -void* __libc_memalign(size_t alignment, size_t size);
 -void __libc_free(void* ptr);
 +void* __malloc(size_t size);
 +void* __calloc(size_t n, size_t size);
 +void* __realloc(void* address, size_t len);
 +void* __memalign(size_t alignment, size_t size) {
 +  void *ret;
 +  if (__posix_memalign(&ret, alignment, size) != 0) {
 +    return nullptr;
 +  } else {
 +    return ret;
 +  }
 +}
 +int __posix_memalign(void **ptr, size_t alignment, size_t size);
 +void __free(void* ptr);
  }  // extern "C"
  
  namespace {
-@@ -24,32 +34,32 @@ namespace {
+@@ -25,32 +35,32 @@ void* GlibcMalloc(const AllocatorDispatch*, size_t siz
  using base::allocator::AllocatorDispatch;
  
  void* GlibcMalloc(const AllocatorDispatch*, size_t size, void* context) {
 -  return __libc_malloc(size);
 +  return __malloc(size);
  }
  
  void* GlibcCalloc(const AllocatorDispatch*,
                    size_t n,
                    size_t size,
                    void* context) {
 -  return __libc_calloc(n, size);
 +  return __calloc(n, size);
  }
  
  void* GlibcRealloc(const AllocatorDispatch*,
                     void* address,
                     size_t size,
                     void* context) {
 -  return __libc_realloc(address, size);
 +  return __realloc(address, size);
  }
  
  void* GlibcMemalign(const AllocatorDispatch*,
                      size_t alignment,
                      size_t size,
                      void* context) {
 -  return __libc_memalign(alignment, size);
 +  return __memalign(alignment, size);
  }
  
  void GlibcFree(const AllocatorDispatch*, void* address, void* context) {
 -  __libc_free(address);
 +  __free(address);
  }
  
- size_t GlibcGetSizeEstimate(const AllocatorDispatch*,
+ NO_SANITIZE("cfi-icall")
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_allocator_allocator__shim__unittest.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_allocator_allocator__shim__unittest.cc
deleted file mode 100644
index d2a9b9220b4a..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_allocator_allocator__shim__unittest.cc
+++ /dev/null
@@ -1,45 +0,0 @@
---- src/3rdparty/chromium/base/allocator/allocator_shim_unittest.cc.orig	2018-11-13 18:25:11 UTC
-+++ src/3rdparty/chromium/base/allocator/allocator_shim_unittest.cc
-@@ -29,7 +29,7 @@
- #include "base/allocator/allocator_interception_mac.h"
- #include "base/mac/mac_util.h"
- #include "third_party/apple_apsl/malloc.h"
--#else
-+#elif !defined(OS_BSD)
- #include <malloc.h>
- #endif
- 
-@@ -294,7 +294,7 @@ TEST_F(AllocatorShimTest, InterceptLibcSymbols) {
-   ASSERT_GE(aligned_allocs_intercepted_by_size[61], 1u);
- #endif  // !OS_WIN
- 
--#if !defined(OS_WIN) && !defined(OS_MACOSX)
-+#if !defined(OS_WIN) && !defined(OS_MACOSX) && !defined(OS_BSD)
-   void* memalign_ptr = memalign(128, 53);
-   ASSERT_NE(nullptr, memalign_ptr);
-   ASSERT_EQ(0u, reinterpret_cast<uintptr_t>(memalign_ptr) % 128);
-@@ -307,7 +307,7 @@ TEST_F(AllocatorShimTest, InterceptLibcSymbols) {
-   ASSERT_GE(aligned_allocs_intercepted_by_alignment[kPageSize], 1u);
-   // pvalloc rounds the size up to the next page.
-   ASSERT_GE(aligned_allocs_intercepted_by_size[kPageSize], 1u);
--#endif  // !OS_WIN && !OS_MACOSX
-+#endif  // !OS_WIN && !OS_MACOSX && !OS_BSD
- 
-   char* realloc_ptr = static_cast<char*>(malloc(10));
-   strcpy(realloc_ptr, "foobar");
-@@ -323,13 +323,13 @@ TEST_F(AllocatorShimTest, InterceptLibcSymbols) {
-   free(zero_alloc_ptr);
-   ASSERT_GE(frees_intercepted_by_addr[Hash(zero_alloc_ptr)], 1u);
- 
--#if !defined(OS_WIN) && !defined(OS_MACOSX)
-+#if !defined(OS_WIN) && !defined(OS_MACOSX) && !defined(OS_BSD)
-   free(memalign_ptr);
-   ASSERT_GE(frees_intercepted_by_addr[Hash(memalign_ptr)], 1u);
- 
-   free(pvalloc_ptr);
-   ASSERT_GE(frees_intercepted_by_addr[Hash(pvalloc_ptr)], 1u);
--#endif  // !OS_WIN && !OS_MACOSX
-+#endif  // !OS_WIN && !OS_MACOSX && !OS_BSD
- 
- #if !defined(OS_WIN)
-   free(posix_memalign_ptr);
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_page__allocator__internals__posix.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_page__allocator__internals__posix.h
index b952a67abb10..2e3cee2557fa 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_page__allocator__internals__posix.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_page__allocator__internals__posix.h
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/base/allocator/partition_allocator/page_allocator_internals_posix.h.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/base/allocator/partition_allocator/page_allocator_internals_posix.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/allocator/partition_allocator/page_allocator_internals_posix.h
-@@ -16,7 +16,7 @@
- 
- #include <mach/mach.h>
+@@ -24,7 +24,7 @@
+ #if defined(OS_ANDROID)
+ #include <sys/prctl.h>
  #endif
--#if defined(OS_LINUX)
-+#if defined(OS_BSD) || defined(OS_LINUX)
+-#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/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_partition__alloc.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_partition__alloc.cc
new file mode 100644
index 000000000000..f502277f6b96
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_allocator_partition__allocator_partition__alloc.cc
@@ -0,0 +1,12 @@
+--- src/3rdparty/chromium/base/allocator/partition_allocator/partition_alloc.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/base/allocator/partition_allocator/partition_alloc.cc
+@@ -202,6 +202,9 @@ void PartitionAllocGlobalInit(OomFunction on_out_of_me
+   // 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)
++  // alignof(std::max_align_t) is only 4 on FreeBSD/i386
++  static_assert(kSmallestBucket >= kAlignment, "generic smallest bucket");
+ #else
+   static_assert(kSmallestBucket == kAlignment, "generic smallest bucket");
+ #endif
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_base__switches.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_base__switches.cc
index 63225c12f7d9..02e1ce9f6294 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_base__switches.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_base__switches.cc
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/base/base_switches.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/base/base_switches.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/base_switches.cc
-@@ -114,7 +114,7 @@ const char kWaitForDebugger[] = "wait-for-debugger";
+@@ -117,7 +117,7 @@ const char kDisableUsbKeyboardDetect[]      = "disable
  const char kDisableUsbKeyboardDetect[]      = "disable-usb-keyboard-detect";
  #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) && !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
-@@ -135,7 +135,7 @@ const char kEnableCrashReporterForTesting[] =
- const char kEnableReachedCodeProfiler[] = "enable-reached-code-profiler";
+@@ -152,7 +152,7 @@ const char kForceFieldTrialParams[] = "force-fieldtria
+ 
  #endif
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#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/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_base__switches.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_base__switches.h
index df66c09b5d0c..4fb9dcae5349 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_base__switches.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_base__switches.h
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/base/base_switches.h.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/base/base_switches.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/base_switches.h
-@@ -37,7 +37,7 @@ extern const char kWaitForDebugger[];
+@@ -39,7 +39,7 @@ extern const char kDisableUsbKeyboardDetect[];
  extern const char kDisableUsbKeyboardDetect[];
  #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) && !BUILDFLAG(IS_LACROS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS) && !BUILDFLAG(IS_LACROS)) || defined(OS_BSD)
  extern const char kDisableDevShmUsage[];
  #endif
  
-@@ -50,7 +50,7 @@ extern const char kEnableReachedCodeProfiler[];
- extern const char kOrderfileMemoryOptimization[];
+@@ -55,7 +55,7 @@ extern const char kForceFieldTrialParams[];
+ extern const char kForceFieldTrialParams[];
  #endif
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#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/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_cpu.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_cpu.cc
index e5fa1f7efec0..b642eaea26f1 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_cpu.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_cpu.cc
@@ -1,38 +1,44 @@
---- src/3rdparty/chromium/base/cpu.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/base/cpu.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/cpu.cc
-@@ -15,7 +15,7 @@
+@@ -16,7 +16,7 @@
+ 
  #include "base/stl_util.h"
- #include "build/build_config.h"
  
--#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))
+-#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_AIX)
+ #include "base/containers/flat_set.h"
  #include "base/files/file_util.h"
+@@ -31,7 +31,7 @@
  #endif
  
-@@ -98,7 +98,7 @@ uint64_t xgetbv(uint32_t xcr) {
+ #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
  
- #endif  // ARCH_CPU_X86_FAMILY
+@@ -182,6 +182,14 @@ std::string* CpuInfoBrand() {
  
--#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))
- std::string* CpuInfoBrand() {
-   static std::string* brand = []() {
-     // This function finds the value from /proc/cpuinfo under the key "model
-@@ -128,7 +128,7 @@ std::string* CpuInfoBrand() {
    return brand;
  }
++#elif defined(OS_BSD)
++std::string* CpuInfoBrand() {
++  static std::string* brand = []() {
++    return new std::string(SysInfo::CPUModelName());
++  }();
++
++  return brand;
++}
  #endif  // defined(ARCH_CPU_ARM_FAMILY) && (defined(OS_ANDROID) ||
--        // defined(OS_LINUX))
-+        // defined(OS_LINUX) || defined(OS_BSD))
- 
- }  // namespace
+         // defined(OS_LINUX) || defined(OS_CHROMEOS))
  
-@@ -252,7 +252,7 @@ void CPU::Initialize() {
+@@ -305,7 +313,7 @@ void CPU::Initialize() {
      }
    }
  #elif defined(ARCH_CPU_ARM_FAMILY)
--#if (defined(OS_ANDROID) || defined(OS_LINUX))
-+#if (defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD))
+-#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();
  #elif defined(OS_WIN)
    // Windows makes high-resolution thread timing information available in
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_cpu.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_cpu.h
new file mode 100644
index 000000000000..77da4e02ef20
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_cpu.h
@@ -0,0 +1,20 @@
+--- src/3rdparty/chromium/base/cpu.h.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/base/cpu.h
+@@ -73,7 +73,7 @@ class BASE_EXPORT CPU final {
+   IntelMicroArchitecture GetIntelMicroArchitecture() const;
+   const std::string& cpu_brand() const { return cpu_brand_; }
+ 
+-#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_AIX)
+   enum class CoreType {
+     kUnknown = 0,
+@@ -124,7 +124,7 @@ class BASE_EXPORT CPU final {
+   // cpuidle driver.
+   using CoreIdleTimes = std::vector<TimeDelta>;
+   static bool GetCumulativeCoreIdleTimes(CoreIdleTimes&);
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) ||
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+         // defined(OS_AIX)
+ 
+  private:
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_debug_debugger__posix.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_debug_debugger__posix.cc
index d42b192f2a90..50452ecbf8c0 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_debug_debugger__posix.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_debug_debugger__posix.cc
@@ -1,56 +1,56 @@
---- src/3rdparty/chromium/base/debug/debugger_posix.cc.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/base/debug/debugger_posix.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/debug/debugger_posix.cc
-@@ -86,7 +86,7 @@ bool BeingDebugged() {
+@@ -98,7 +98,7 @@ bool BeingDebugged() {
      KERN_PROC,
      KERN_PROC_PID,
      getpid()
 -#if defined(OS_OPENBSD)
 +#if defined(OS_BSD) 
      , sizeof(struct kinfo_proc),
      0
  #endif
-@@ -94,33 +94,35 @@ bool BeingDebugged() {
+@@ -106,33 +106,35 @@ bool BeingDebugged() {
  
    // Caution: struct kinfo_proc is marked __APPLE_API_UNSTABLE.  The source and
    // binary interfaces may change.
 -  struct kinfo_proc info;
 -  size_t info_size = sizeof(info);
 +  struct kinfo_proc *info;
 +  size_t info_size;
  
 -#if defined(OS_OPENBSD)
    if (sysctl(mib, base::size(mib), NULL, &info_size, NULL, 0) < 0)
      return -1;
  
 +  info = (struct kinfo_proc *)malloc(info_size);
    mib[5] = (info_size / sizeof(struct kinfo_proc));
 -#endif
  
 -  int sysctl_result = sysctl(mib, base::size(mib), &info, &info_size, NULL, 0);
 +  int sysctl_result = sysctl(mib, base::size(mib), info, &info_size, NULL, 0);
    DCHECK_EQ(sysctl_result, 0);
    if (sysctl_result != 0) {
      is_set = true;
      being_debugged = false;
 -    return being_debugged;
 +    goto out;
    }
  
    // This process is being debugged if the P_TRACED flag is set.
    is_set = true;
  #if defined(OS_FREEBSD)
 -  being_debugged = (info.ki_flag & P_TRACED) != 0;
 +  being_debugged = (info->ki_flag & P_TRACED) != 0;
  #elif defined(OS_BSD)
 -  being_debugged = (info.p_flag & P_TRACED) != 0;
 +  being_debugged = (info->p_flag & P_TRACED) != 0;
  #else
 -  being_debugged = (info.kp_proc.p_flag & P_TRACED) != 0;
 +  being_debugged = (info->kp_proc.p_flag & P_TRACED) != 0;
  #endif
 +
 +out:
 +  free(info);
    return being_debugged;
  }
  
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_debug_elf__reader.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_debug_elf__reader.cc
index eb8a4b38f723..5acd319f25bb 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_debug_elf__reader.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_debug_elf__reader.cc
@@ -1,28 +1,28 @@
---- src/3rdparty/chromium/base/debug/elf_reader.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/base/debug/elf_reader.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/debug/elf_reader.cc
-@@ -35,7 +35,9 @@ using Nhdr = Elf64_Nhdr;
+@@ -38,7 +38,9 @@ using Word = Elf64_Word;
  using Word = Elf64_Word;
  #endif
  
 +#if !defined(OS_BSD)
  constexpr char kGnuNoteName[] = "GNU";
 +#endif
  
- // Returns a pointer to the header of the ELF binary mapped into memory,
- // or a null pointer if the header is invalid.
-@@ -98,6 +100,7 @@ size_t ReadElfBuildId(const void* elf_mapped_base,
+ // Returns a pointer to the header of the ELF binary mapped into memory, or a
+ // null pointer if the header is invalid. Here and below |elf_mapped_base| is a
+@@ -75,6 +77,7 @@ size_t ReadElfBuildId(const void* elf_mapped_base,
      bool found = false;
      while (current_section < section_end) {
        current_note = reinterpret_cast<const Nhdr*>(current_section);
 +#if !defined(OS_BSD)
        if (current_note->n_type == NT_GNU_BUILD_ID) {
          StringPiece note_name(current_section + sizeof(Nhdr),
                                current_note->n_namesz);
-@@ -107,6 +110,7 @@ size_t ReadElfBuildId(const void* elf_mapped_base,
+@@ -84,6 +87,7 @@ size_t ReadElfBuildId(const void* elf_mapped_base,
            break;
          }
        }
 +#endif
  
        size_t section_size = bits::Align(current_note->n_namesz, 4) +
                              bits::Align(current_note->n_descsz, 4) +
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_debug_proc__maps__linux.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_debug_proc__maps__linux.cc
index e98f090c003c..c2a1443ead38 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_debug_proc__maps__linux.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_debug_proc__maps__linux.cc
@@ -1,141 +1,141 @@
---- src/3rdparty/chromium/base/debug/proc_maps_linux.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/base/debug/proc_maps_linux.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/debug/proc_maps_linux.cc
-@@ -12,7 +12,7 @@
+@@ -13,7 +13,7 @@
  #include "base/strings/string_split.h"
  #include "build/build_config.h"
  
--#if defined(OS_LINUX) || defined(OS_ANDROID)
-+#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_ANDROID)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
  #include <inttypes.h>
  #endif
  
-@@ -28,6 +28,11 @@
+@@ -29,6 +29,11 @@ namespace debug {
  namespace base {
  namespace debug {
  
 +#if defined(OS_BSD)
 +const char kProcSelfMapsPath[] = "/proc/curproc/map";
 +#else
 +const char kProcSelfMapsPath[] = "/proc/self/maps";
 +
  // 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) {
-@@ -43,15 +48,16 @@ static bool ContainsGateVMA(std::string* proc_maps, si
+@@ -44,15 +49,16 @@ static bool ContainsGateVMA(std::string* proc_maps, si
    return false;
  #endif
  }
 +#endif
  
  bool ReadProcMaps(std::string* proc_maps) {
    // seq_file only writes out a page-sized amount on each call. Refer to header
    // file for details.
    const long kReadSize = sysconf(_SC_PAGESIZE);
  
 -  base::ScopedFD fd(HANDLE_EINTR(open("/proc/self/maps", O_RDONLY)));
 +  base::ScopedFD fd(HANDLE_EINTR(open(kProcSelfMapsPath, O_RDONLY)));
    if (!fd.is_valid()) {
 -    DPLOG(ERROR) << "Couldn't open /proc/self/maps";
 +    DPLOG(ERROR) << "Couldn't open " << kProcSelfMapsPath;
      return false;
    }
    proc_maps->clear();
-@@ -65,7 +71,7 @@ bool ReadProcMaps(std::string* proc_maps) {
+@@ -66,7 +72,7 @@ bool ReadProcMaps(std::string* proc_maps) {
  
      ssize_t bytes_read = HANDLE_EINTR(read(fd.get(), buffer, kReadSize));
      if (bytes_read < 0) {
 -      DPLOG(ERROR) << "Couldn't read /proc/self/maps";
 +      DPLOG(ERROR) << "Couldn't read " << kProcSelfMapsPath;
        proc_maps->clear();
        return false;
      }
-@@ -76,6 +82,7 @@ bool ReadProcMaps(std::string* proc_maps) {
+@@ -77,6 +83,7 @@ bool ReadProcMaps(std::string* proc_maps) {
      if (bytes_read == 0)
        break;
  
 +#if !defined(OS_BSD)
      // The gate VMA is handled as a special case after seq_file has finished
      // iterating through all entries in the virtual memory table.
      //
-@@ -86,6 +93,7 @@ bool ReadProcMaps(std::string* proc_maps) {
+@@ -87,6 +94,7 @@ bool ReadProcMaps(std::string* proc_maps) {
      // Avoid this by searching for the gate VMA and breaking early.
      if (ContainsGateVMA(proc_maps, pos))
        break;
 +#endif
    }
  
    return true;
-@@ -114,10 +122,32 @@ bool ParseProcMaps(const std::string& input,
+@@ -115,10 +123,32 @@ bool ParseProcMaps(const std::string& input,
      MappedMemoryRegion region;
      const char* line = lines[i].c_str();
      char permissions[5] = {'\0'};  // Ensure NUL-terminated string.
 +    int path_index = 0;
 +
 +#if defined(OS_BSD)
 +    if (lines[i].empty())
 +      continue;
 +
 +
 +    char cow;
 +
 +    // Format:
 +    //
 +    // 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",
 +	       &region.start, &region.end, permissions, &cow, &path_index) < 4) {
 +      DPLOG(WARNING) << "sscanf failed for line: " << line;
 +      return false;
 +    }
 +
 +    const char* fullpath = line + path_index;
 +    const char* cred     = strchr(fullpath, ' ');
 +#else
      uint8_t dev_major = 0;
      uint8_t dev_minor = 0;
      long inode = 0;
 -    int path_index = 0;
  
      // Sample format from man 5 proc:
      //
-@@ -133,6 +163,7 @@ bool ParseProcMaps(const std::string& input,
+@@ -134,6 +164,7 @@ bool ParseProcMaps(const std::string& input,
        DPLOG(WARNING) << "sscanf failed for line: " << line;
        return false;
      }
 +#endif
  
      region.permissions = 0;
  
-@@ -151,14 +182,31 @@ bool ParseProcMaps(const std::string& input,
+@@ -152,14 +183,31 @@ bool ParseProcMaps(const std::string& input,
      else if (permissions[2] != '-')
        return false;
  
 +#if defined(OS_BSD)
 +    if (cow == 'C') {
 +      region.permissions |= MappedMemoryRegion::PRIVATE;
 +    } else if (cow != 'N') {
 +      DPLOG(WARNING) << "unknown value for COW in line " << line << ": " << cow;
 +      return false;
 +    }
 +#else
      if (permissions[3] == 'p')
        region.permissions |= MappedMemoryRegion::PRIVATE;
      else if (permissions[3] != 's' && permissions[3] != 'S')  // Shared memory.
        return false;
 +#endif
  
      // Pushing then assigning saves us a string copy.
      regions.push_back(region);
 +#if defined(OS_BSD)
 +    if (cred != nullptr) {
 +      regions.back().path.assign(line + path_index, cred - fullpath);
 +    } else {
 +      regions.back().path.assign(line + path_index);
 +    }
 +#else
      regions.back().path.assign(line + path_index);
 +#endif
    }
  
    regions_out->swap(regions);
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_debug_stack__trace.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_debug_stack__trace.cc
index 1fac016eeff0..eb1f8a003b67 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_debug_stack__trace.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_debug_stack__trace.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/base/debug/stack_trace.cc.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/base/debug/stack_trace.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/debug/stack_trace.cc
-@@ -14,7 +14,7 @@
+@@ -15,7 +15,7 @@
  
  #if BUILDFLAG(CAN_UNWIND_WITH_FRAME_POINTERS)
  
--#if defined(OS_LINUX) || defined(OS_ANDROID)
-+#if defined(OS_LINUX) || 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)
  #include <pthread.h>
  #include "base/process/process_handle.h"
  #include "base/threading/platform_thread.h"
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_debug_stack__trace__posix.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_debug_stack__trace__posix.cc
index ba906e94bc2a..439424603491 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_debug_stack__trace__posix.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_debug_stack__trace__posix.cc
@@ -1,23 +1,23 @@
---- src/3rdparty/chromium/base/debug/stack_trace_posix.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/base/debug/stack_trace_posix.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/debug/stack_trace_posix.cc
 @@ -35,7 +35,7 @@
  #include <AvailabilityMacros.h>
  #endif
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#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/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_files_file__path__watcher.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_files_file__path__watcher.cc
deleted file mode 100644
index 1afb711c7f77..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_files_file__path__watcher.cc
+++ /dev/null
@@ -1,15 +0,0 @@
---- src/3rdparty/chromium/base/files/file_path_watcher.cc.orig	2020-11-07 01:22:36 UTC
-+++ src/3rdparty/chromium/base/files/file_path_watcher.cc
-@@ -20,10 +20,10 @@ FilePathWatcher::~FilePathWatcher() {
- // static
- bool FilePathWatcher::RecursiveWatchAvailable() {
- #if (defined(OS_MACOSX) && !defined(OS_IOS)) || defined(OS_WIN) || \
--    defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX)
-+    (defined(OS_LINUX) && !defined(OS_BSD)) || defined(OS_ANDROID) || defined(OS_AIX)
-   return true;
- #else
--  // FSEvents isn't available on iOS.
-+  // FSEvents isn't available on iOS and the kqueue watcher.
-   return false;
- #endif
- }
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_files_file__path__watcher__unittest.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_files_file__path__watcher__unittest.cc
deleted file mode 100644
index 385939a432fb..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_files_file__path__watcher__unittest.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/3rdparty/chromium/base/files/file_path_watcher_unittest.cc.orig	2018-11-13 18:25:11 UTC
-+++ src/3rdparty/chromium/base/files/file_path_watcher_unittest.cc
-@@ -438,7 +438,7 @@ TEST_F(FilePathWatcherTest, WatchDirectory) {
-   VLOG(1) << "Waiting for file1 creation";
-   ASSERT_TRUE(WaitForEvents());
- 
--#if !defined(OS_MACOSX)
-+#if !defined(OS_MACOSX) && !defined(OS_BSD)
-   // Mac implementation does not detect files modified in a directory.
-   ASSERT_TRUE(WriteFile(file1, "content v2"));
-   VLOG(1) << "Waiting for file1 modification";
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_files_file__util.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_files_file__util.h
index 6b6543e338ab..1959cff3502d 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_files_file__util.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_files_file__util.h
@@ -1,11 +1,28 @@
---- src/3rdparty/chromium/base/files/file_util.h.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/base/files/file_util.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/files/file_util.h
-@@ -445,7 +445,7 @@ BASE_EXPORT bool VerifyPathControlledByAdmin(const bas
+@@ -278,14 +278,14 @@ BASE_EXPORT bool ExecutableExistsInPath(Environment* e
+ BASE_EXPORT bool ExecutableExistsInPath(Environment* env,
+                                         const FilePath::StringType& executable);
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_AIX)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_AIX) || defined(OS_BSD)
+ // Determine if files under a given |path| can be mapped and then mprotect'd
+ // PROT_EXEC. This depends on the mount options used for |path|, which vary
+ // among different Linux distributions and possibly local configuration. It also
+ // depends on details of kernel--ChromeOS uses the noexec option for /dev/shm
+ // but its kernel allows mprotect with PROT_EXEC anyway.
+ BASE_EXPORT bool IsPathExecutable(const FilePath& path);
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_AIX)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_AIX) || defined(OS_BSD)
+ 
+ #endif  // OS_POSIX
+ 
+@@ -592,7 +592,7 @@ BASE_EXPORT int GetMaximumPathComponentLength(const ba
  // the directory |path|, in the number of FilePath::CharType, or -1 on failure.
  BASE_EXPORT int GetMaximumPathComponentLength(const base::FilePath& path);
  
--#if defined(OS_LINUX) || defined(OS_AIX)
-+#if defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_AIX)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_AIX) || defined(OS_BSD)
  // Broad categories of file systems as returned by statfs() on Linux.
  enum FileSystemType {
    FILE_SYSTEM_UNKNOWN,  // statfs failed.
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_files_file__util__posix.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_files_file__util__posix.cc
index 4ba4d5bf0e6e..8795a29068de 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_files_file__util__posix.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_files_file__util__posix.cc
@@ -1,11 +1,60 @@
---- src/3rdparty/chromium/base/files/file_util_posix.cc.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/base/files/file_util_posix.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/files/file_util_posix.cc
-@@ -407,7 +407,7 @@ bool CopyDirectoryExcl(const FilePath& from_path,
- #endif  // !defined(OS_NACL_NONSFI)
+@@ -412,7 +412,7 @@ bool CreateLocalNonBlockingPipe(int fds[2]) {
+ }
  
  bool CreateLocalNonBlockingPipe(int fds[2]) {
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    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
+   // space. It can fail because the filesystem doesn't support it. In that case,
+   // use the manual method below.
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
++#if defined(OS_BSD)
++  if (HANDLE_EINTR(posix_fallocate(file->GetPlatformFile(), offset, size)) != -1)
++#else
+   if (HANDLE_EINTR(fallocate(file->GetPlatformFile(), 0, offset, size)) != -1)
++#endif
+     return true;
+   DPLOG(ERROR) << "fallocate";
+ #elif defined(OS_APPLE)
+@@ -1172,7 +1176,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.
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || \
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) || \
+     (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,
+   return internal::PreReadFileSlow(file_path, max_bytes)
+              ? PrefetchResult{PrefetchResultCode::kSlowSuccess}
+              : PrefetchResult{PrefetchResultCode::kSlowFailed};
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || (defined(OS_ANDROID) &&
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) || (defined(OS_ANDROID) &&
+         // __ANDROID_API__ >= 21)
+ }
+ 
+@@ -1243,7 +1247,7 @@ bool MoveUnsafe(const FilePath& from_path, const FileP
+ 
+ #endif  // !defined(OS_NACL_NONSFI)
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_AIX)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_AIX) || defined(OS_BSD)
+ 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
+   }
+   return result;
+ }
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_AIX)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_AIX) || defined(OS_BSD)
+ 
+ }  // namespace base
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_files_scoped__file.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_files_scoped__file.cc
index 85c3a240ec4e..b5f516c5bd1d 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_files_scoped__file.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_files_scoped__file.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/base/files/scoped_file.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/base/files/scoped_file.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/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)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_APPLE) || \
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) || defined(OS_APPLE) || \
+     defined(OS_FUCHSIA) || defined(OS_ANDROID)
    // 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/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_i18n_icu__util.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_i18n_icu__util.cc
index f43379359f78..beef6293b3b1 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_i18n_icu__util.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_i18n_icu__util.cc
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/base/i18n/icu_util.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/base/i18n/icu_util.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/i18n/icu_util.cc
-@@ -49,7 +49,7 @@
+@@ -48,7 +48,7 @@
+ #include "third_party/icu/source/common/unicode/unistr.h"
  #endif
  
- #if defined(OS_ANDROID) || defined(OS_FUCHSIA) || \
--    (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMECAST))
-+    (defined(OS_LINUX) && !BUILDFLAG(IS_CHROMECAST)) || defined(OS_BSD)
+-#if defined(OS_ANDROID) || defined(OS_FUCHSIA) || \
++#if defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD) || \
+     ((defined(OS_LINUX) || defined(OS_CHROMEOS)) && !BUILDFLAG(IS_CHROMECAST))
  #include "third_party/icu/source/i18n/unicode/timezone.h"
  #endif
- 
 @@ -345,7 +345,7 @@ void InitializeIcuTimeZone() {
        fuchsia::IntlProfileWatcher::GetPrimaryTimeZoneIdForIcuInitialization();
    icu::TimeZone::adoptDefault(
        icu::TimeZone::createTimeZone(icu::UnicodeString::fromUTF8(zone_id)));
--#elif defined(OS_LINUX) && !BUILDFLAG(IS_CHROMECAST)
-+#elif (defined(OS_LINUX) || defined(OS_BSD)) && !BUILDFLAG(IS_CHROMECAST)
+-#elif (defined(OS_LINUX) || defined(OS_CHROMEOS)) && !BUILDFLAG(IS_CHROMECAST)
++#elif (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && !BUILDFLAG(IS_CHROMECAST)
    // To respond to the time zone change properly, the default time zone
    // cache in ICU has to be populated on starting up.
    // See TimeZoneMonitorLinux::NotifyClientsFromImpl().
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_linux__util.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_linux__util.cc
index 4f8d31d82be8..5c17c98e93d9 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_linux__util.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_linux__util.cc
@@ -1,12 +1,38 @@
---- src/3rdparty/chromium/base/linux_util.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/base/linux_util.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/linux_util.cc
-@@ -78,6 +78,9 @@ class DistroNameGetter {
+@@ -15,6 +15,7 @@
+ 
+ #include <iomanip>
+ #include <memory>
++#include <sstream>
+ 
+ #include "base/files/dir_reader_posix.h"
+ #include "base/files/file_util.h"
+@@ -78,6 +79,9 @@ class DistroNameGetter {
   public:
    DistroNameGetter() {
      static const char* const kFilesToCheck[] = {"/etc/os-release",
 +#if defined(OS_BSD)
 +	                                        "%%LOCALBASE%%/etc/os-release",
 +#endif
                                                  "/usr/lib/os-release"};
      for (const char* file : kFilesToCheck) {
        if (ReadDistroFromOSReleaseFile(file))
+@@ -134,6 +138,9 @@ bool GetThreadsForProcess(pid_t pid, std::vector<pid_t
+ }
+ 
+ bool GetThreadsForProcess(pid_t pid, std::vector<pid_t>* tids) {
++#if defined(OS_BSD)
++  return false;
++#else
+   // 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
+   }
+ 
+   return true;
++#endif
+ }
+ 
+ pid_t FindThreadIDWithSyscall(pid_t pid, const std::string& expected_data,
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_logging__unittest.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_logging__unittest.cc
deleted file mode 100644
index 905c62f09a88..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_logging__unittest.cc
+++ /dev/null
@@ -1,15 +0,0 @@
---- src/3rdparty/chromium/base/logging_unittest.cc.orig	2018-11-13 18:25:11 UTC
-+++ src/3rdparty/chromium/base/logging_unittest.cc
-@@ -420,10 +420,10 @@ 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;
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_BSD)
-   crash_addr = reinterpret_cast<uintptr_t>(info->si_addr);
- #else  // OS_POSIX && !OS_MACOSX
--  ucontext_t* context = reinterpret_cast<ucontext_t*>(context_ptr);
-+  struct ucontext_t* context = reinterpret_cast<ucontext_t*>(context_ptr);
- #if defined(ARCH_CPU_X86)
-   crash_addr = static_cast<uintptr_t>(context->uc_mcontext.gregs[REG_EIP]);
- #elif defined(ARCH_CPU_X86_64)
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_memory_discardable__memory.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_memory_discardable__memory.cc
index fa920e8f17ca..d77508d7d9e6 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_memory_discardable__memory.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_memory_discardable__memory.cc
@@ -1,63 +1,63 @@
---- src/3rdparty/chromium/base/memory/discardable_memory.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/base/memory/discardable_memory.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/memory/discardable_memory.cc
 @@ -23,7 +23,7 @@ const base::Feature kMadvFreeDiscardableMemory{
      "MadvFreeDiscardableMemory", base::FEATURE_DISABLED_BY_DEFAULT};
  #endif  // defined(OS_POSIX)
  
--#if defined(OS_ANDROID) || defined(OS_LINUX)
-+#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  const base::Feature kDiscardableMemoryBackingTrial{
      "DiscardableMemoryBackingTrial", base::FEATURE_DISABLED_BY_DEFAULT};
  
 @@ -41,13 +41,13 @@ const base::FeatureParam<DiscardableMemoryTrialGroup>
          DiscardableMemoryTrialGroup::kEmulatedSharedMemory,
          &kDiscardableMemoryBackingParamOptions};
  
--#endif  // defined(OS_ANDROID) || defined(OS_LINUX)
-+#endif  // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+-#endif  // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
  }  // namespace features
  
  namespace {
  
--#if defined(OS_ANDROID) || defined(OS_LINUX)
-+#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
  DiscardableMemoryBacking GetBackingForFieldTrial() {
    DiscardableMemoryTrialGroup trial_group =
 @@ -61,11 +61,11 @@ DiscardableMemoryBacking GetBackingForFieldTrial() {
    }
    NOTREACHED();
  }
--#endif  // defined(OS_ANDROID) || defined(OS_LINUX)
-+#endif  // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+-#endif  // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
  }  // namespace
  
--#if defined(OS_ANDROID) || defined(OS_LINUX)
-+#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
  // Probe capabilities of this device to determine whether we should participate
  // in the discardable memory backing trial.
 @@ -87,18 +87,18 @@ DiscardableMemoryTrialGroup GetDiscardableMemoryBackin
    DCHECK(DiscardableMemoryBackingFieldTrialIsEnabled());
    return features::kDiscardableMemoryBackingParam.Get();
  }
--#endif  // defined(OS_ANDROID) || defined(OS_LINUX)
-+#endif  // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+-#endif  // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
  DiscardableMemory::DiscardableMemory() = default;
  
  DiscardableMemory::~DiscardableMemory() = default;
  
  DiscardableMemoryBacking GetDiscardableMemoryBacking() {
--#if defined(OS_ANDROID) || defined(OS_LINUX)
-+#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    if (DiscardableMemoryBackingFieldTrialIsEnabled()) {
      return GetBackingForFieldTrial();
    }
--#endif  // defined(OS_ANDROID) || defined(OS_LINUX)
-+#endif  // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+-#endif  // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
  #if defined(OS_ANDROID)
    if (ashmem_device_is_supported())
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_memory_discardable__memory__internal.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_memory_discardable__memory__internal.h
index 1396425170e2..0278711d18de 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_memory_discardable__memory__internal.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_memory_discardable__memory__internal.h
@@ -1,19 +1,19 @@
---- src/3rdparty/chromium/base/memory/discardable_memory_internal.h.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/base/memory/discardable_memory_internal.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/memory/discardable_memory_internal.h
 @@ -10,7 +10,7 @@
  #include "base/metrics/field_trial_params.h"
  #include "build/build_config.h"
  
--#if defined(OS_ANDROID) || defined(OS_LINUX)
-+#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
  namespace base {
  
 @@ -47,6 +47,6 @@ GetDiscardableMemoryBackingFieldTrialGroup();
  
  }  // namespace base
  
--#endif  // defined(OS_LINUX) || defined(OS_ANDROID)
-+#endif  // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
  
  #endif  //  BASE_MEMORY_DISCARDABLE_MEMORY_INTERNAL_H_
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_memory_madv__free__discardable__memory__posix.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_memory_madv__free__discardable__memory__posix.cc
index 5aa744d1575d..7841d0bf0819 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_memory_madv__free__discardable__memory__posix.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_memory_madv__free__discardable__memory__posix.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/base/memory/madv_free_discardable_memory_posix.cc.orig	2020-04-08 09:41:36 UTC
+--- src/3rdparty/chromium/base/memory/madv_free_discardable_memory_posix.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/memory/madv_free_discardable_memory_posix.cc
-@@ -271,7 +271,7 @@ void MadvFreeDiscardableMemoryPosix::SetKeepMemoryForT
+@@ -296,7 +296,7 @@ bool MadvFreeDiscardableMemoryPosix::IsResident() cons
  
  bool MadvFreeDiscardableMemoryPosix::IsResident() const {
    DFAKE_SCOPED_RECURSIVE_LOCK(thread_collision_warner_);
--#ifdef OS_MACOSX
-+#if defined(OS_MACOSX) || defined(OS_BSD)
+-#if defined(OS_APPLE)
++#if defined(OS_APPLE) || defined(OS_BSD)
    std::vector<char> vec(allocated_pages_);
  #else
    std::vector<unsigned char> vec(allocated_pages_);
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_memory_platform__shared__memory__region.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_memory_platform__shared__memory__region.h
index 63e4a74a1b09..357625b3b3fe 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_memory_platform__shared__memory__region.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_memory_platform__shared__memory__region.h
@@ -1,29 +1,29 @@
---- src/3rdparty/chromium/base/memory/platform_shared_memory_region.h.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/base/memory/platform_shared_memory_region.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/memory/platform_shared_memory_region.h
-@@ -28,7 +28,7 @@
+@@ -27,7 +27,7 @@
  #include "base/files/scoped_file.h"
  #endif
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  namespace content {
  class SandboxIPCHandler;
  }
-@@ -122,7 +122,7 @@ class BASE_EXPORT PlatformSharedMemoryRegion {
+@@ -120,7 +120,7 @@ class BASE_EXPORT PlatformSharedMemoryRegion {
      kMaxValue = GET_SHMEM_TEMP_DIR_FAILURE
    };
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    // Structure to limit access to executable region creation.
    struct ExecutableRegion {
     private:
-@@ -276,7 +276,7 @@ class BASE_EXPORT PlatformSharedMemoryRegion {
+@@ -264,7 +264,7 @@ class BASE_EXPORT PlatformSharedMemoryRegion {
                             CheckPlatformHandlePermissionsCorrespondToMode);
    static PlatformSharedMemoryRegion Create(Mode mode,
                                             size_t size
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
                                             ,
                                             bool executable = false
  #endif
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_memory_platform__shared__memory__region__posix.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_memory_platform__shared__memory__region__posix.cc
index f90fe21fa47a..e2087d966737 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_memory_platform__shared__memory__region__posix.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_memory_platform__shared__memory__region__posix.cc
@@ -1,38 +1,38 @@
---- src/3rdparty/chromium/base/memory/platform_shared_memory_region_posix.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/base/memory/platform_shared_memory_region_posix.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/memory/platform_shared_memory_region_posix.cc
-@@ -76,7 +76,7 @@ FDPair ScopedFDPair::get() const {
+@@ -70,7 +70,7 @@ FDPair ScopedFDPair::get() const {
    return {fd.get(), readonly_fd.get()};
  }
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#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 =
-@@ -85,7 +85,7 @@ ScopedFD PlatformSharedMemoryRegion::ExecutableRegion:
+@@ -79,7 +79,7 @@ ScopedFD PlatformSharedMemoryRegion::ExecutableRegion:
      return region.PassPlatformHandle().fd;
    return ScopedFD();
  }
--#endif  // defined(OS_LINUX)
-+#endif  // defined(OS_LINUX) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
  // static
  PlatformSharedMemoryRegion PlatformSharedMemoryRegion::Take(
-@@ -224,7 +224,7 @@ bool PlatformSharedMemoryRegion::MapAtInternal(off_t o
+@@ -204,7 +204,7 @@ PlatformSharedMemoryRegion PlatformSharedMemoryRegion:
  // static
  PlatformSharedMemoryRegion PlatformSharedMemoryRegion::Create(Mode mode,
                                                                size_t size
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
                                                                ,
                                                                bool executable
  #endif
-@@ -255,7 +255,7 @@ PlatformSharedMemoryRegion PlatformSharedMemoryRegion:
+@@ -233,7 +233,7 @@ PlatformSharedMemoryRegion PlatformSharedMemoryRegion:
    // flag.
    FilePath directory;
    if (!GetShmemTempDir(
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
            executable,
  #else
            false /* executable */,
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_memory_shared__memory__mapping__unittest.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_memory_shared__memory__mapping__unittest.cc
deleted file mode 100644
index 6505106475d0..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_memory_shared__memory__mapping__unittest.cc
+++ /dev/null
@@ -1,39 +0,0 @@
---- src/3rdparty/chromium/base/memory/shared_memory_mapping_unittest.cc.orig	2019-05-23 12:39:34 UTC
-+++ src/3rdparty/chromium/base/memory/shared_memory_mapping_unittest.cc
-@@ -12,6 +12,7 @@
- #include "base/containers/span.h"
- #include "base/memory/read_only_shared_memory_region.h"
- #include "testing/gtest/include/gtest/gtest.h"
-+#include "base/sys_byteorder.h"
- 
- namespace base {
- 
-@@ -69,8 +70,8 @@ TEST_F(SharedMemoryMappingTest, SpanWithAutoDeducedEle
- 
-   for (size_t i = 0; i < write_span.size(); ++i)
-     write_span[i] = i + 1;
--  EXPECT_EQ(0x04030201u, read_span[0]);
--  EXPECT_EQ(0x08070605u, read_span[1]);
-+  EXPECT_EQ(HostToNet32(0x01020304u), read_span[0]);
-+  EXPECT_EQ(HostToNet32(0x05060708u), read_span[1]);
- }
- 
- TEST_F(SharedMemoryMappingTest, SpanWithExplicitElementCount) {
-@@ -95,13 +96,13 @@ TEST_F(SharedMemoryMappingTest, SpanWithExplicitElemen
- 
-   for (size_t i = 0; i < write_span.size(); ++i)
-     write_span[i] = i + 1;
--  EXPECT_EQ(0x04030201u, read_span[0]);
--  EXPECT_EQ(0x08070605u, read_span[1]);
--  EXPECT_EQ(0x04030201u, read_span_2[0]);
-+  EXPECT_EQ(HostToNet32(0x01020304u), read_span[0]);
-+  EXPECT_EQ(HostToNet32(0x05060708u), read_span[1]);
-+  EXPECT_EQ(HostToNet32(0x01020304u), read_span_2[0]);
- 
-   std::fill(write_span_2.begin(), write_span_2.end(), 0);
-   EXPECT_EQ(0u, read_span[0]);
--  EXPECT_EQ(0x08070605u, read_span[1]);
-+  EXPECT_EQ(HostToNet32(0x05060708u), read_span[1]);
-   EXPECT_EQ(0u, read_span_2[0]);
- }
- 
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_message__loop_message__pump__glib.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_message__loop_message__pump__glib.cc
new file mode 100644
index 000000000000..f54b950bffee
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_message__loop_message__pump__glib.cc
@@ -0,0 +1,28 @@
+--- src/3rdparty/chromium/base/message_loop/message_pump_glib.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/base/message_loop/message_pump_glib.cc
+@@ -8,6 +8,11 @@
+ #include <glib.h>
+ #include <math.h>
+ 
++#if defined(OS_BSD)
++#include <pthread.h>
++#include <pthread_np.h>
++#endif
++
+ #include "base/logging.h"
+ #include "base/numerics/safe_conversions.h"
+ #include "base/posix/eintr_wrapper.h"
+@@ -48,9 +53,13 @@ bool RunningOnMainThread() {
+ }
+ 
+ bool RunningOnMainThread() {
++#if defined(OS_BSD)
++  return pthread_main_np();
++#else
+   auto pid = getpid();
+   auto tid = PlatformThread::CurrentId();
+   return pid > 0 && tid > 0 && pid == tid;
++#endif
+ }
+ 
+ // A brief refresher on GLib:
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_metrics_bucket__ranges__unittest.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_metrics_bucket__ranges__unittest.cc
deleted file mode 100644
index a360b48af449..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_metrics_bucket__ranges__unittest.cc
+++ /dev/null
@@ -1,32 +0,0 @@
---- src/3rdparty/chromium/base/metrics/bucket_ranges_unittest.cc.orig	2019-05-23 12:39:34 UTC
-+++ src/3rdparty/chromium/base/metrics/bucket_ranges_unittest.cc
-@@ -7,6 +7,7 @@
- #include <stdint.h>
- 
- #include "testing/gtest/include/gtest/gtest.h"
-+#include "base/sys_byteorder.h"
- 
- namespace base {
- namespace {
-@@ -64,13 +65,21 @@ TEST(BucketRangesTest, Checksum) {
-   ranges.set_range(2, 2);
- 
-   ranges.ResetChecksum();
-+#if defined(ARCH_CPU_LITTLE_ENDIAN)
-   EXPECT_EQ(289217253u, ranges.checksum());
-+#else
-+  EXPECT_EQ(2767231596u, ranges.checksum());
-+#endif
- 
-   ranges.set_range(2, 3);
-   EXPECT_FALSE(ranges.HasValidChecksum());
- 
-   ranges.ResetChecksum();
-+#if defined(ARCH_CPU_LITTLE_ENDIAN)
-   EXPECT_EQ(2843835776u, ranges.checksum());
-+#else
-+  EXPECT_EQ(3556223738u, ranges.checksum());
-+#endif
-   EXPECT_TRUE(ranges.HasValidChecksum());
- }
- 
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_native__library__unittest.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_native__library__unittest.cc
deleted file mode 100644
index d9d1bd87e167..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_native__library__unittest.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/3rdparty/chromium/base/native_library_unittest.cc.orig	2018-11-13 18:25:11 UTC
-+++ src/3rdparty/chromium/base/native_library_unittest.cc
-@@ -120,7 +120,7 @@ TEST(NativeLibraryTest, LoadLibrary) {
- // Android dlopen() requires further investigation, as it might vary across
- // versions with respect to symbol resolution scope.
- // TSan and MSan error out on RTLD_DEEPBIND, https://crbug.com/705255
--#if !defined(OS_ANDROID) && !defined(THREAD_SANITIZER) && \
-+#if !defined(OS_ANDROID) && !defined(OS_BSD) && !defined(THREAD_SANITIZER) && \
-     !defined(MEMORY_SANITIZER)
- 
- // Verifies that the |prefer_own_symbols| option satisfies its guarantee that
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_numerics_safe__math__shared__impl.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_numerics_safe__math__shared__impl.h
index 62c4313ff1e4..da9d35242799 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_numerics_safe__math__shared__impl.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_numerics_safe__math__shared__impl.h
@@ -1,12 +1,12 @@
---- src/3rdparty/chromium/base/numerics/safe_math_shared_impl.h.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/base/numerics/safe_math_shared_impl.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/numerics/safe_math_shared_impl.h
-@@ -23,8 +23,7 @@
+@@ -24,8 +24,7 @@
  // Where available use builtin math overflow support on Clang and GCC.
  #elif !defined(__native_client__) &&                         \
        ((defined(__clang__) &&                                \
 -        ((__clang_major__ > 3) ||                            \
 -         (__clang_major__ == 3 && __clang_minor__ >= 4))) || \
 +        (__clang_major__ > 6)) ||                            \
         (defined(__GNUC__) && __GNUC__ >= 5))
  #include "base/numerics/safe_math_clang_gcc_impl.h"
  #define BASE_HAS_OPTIMIZED_SAFE_MATH (1)
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_posix_unix__domain__socket.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_posix_unix__domain__socket.cc
index a36e2b27ddf0..459f4db2b6b4 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_posix_unix__domain__socket.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_posix_unix__domain__socket.cc
@@ -1,49 +1,49 @@
---- src/3rdparty/chromium/base/posix/unix_domain_socket.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/base/posix/unix_domain_socket.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/posix/unix_domain_socket.cc
 @@ -5,7 +5,10 @@
  #include "base/posix/unix_domain_socket.h"
  
  #include <errno.h>
 +#include <sys/param.h>
  #include <sys/socket.h>
 +#include <sys/types.h>
-+#include <sys/ucred.h>
++#include <sys/ucred.h>a
  #if !defined(OS_NACL_NONSFI)
  #include <sys/un.h>
  #endif
-@@ -28,6 +31,14 @@ namespace base {
+@@ -29,6 +32,14 @@ const size_t UnixDomainSocket::kMaxFileDescriptors = 1
  
  const size_t UnixDomainSocket::kMaxFileDescriptors = 16;
  
 +#ifndef SCM_CREDENTIALS
 +#  define SCM_CREDENTIALS  0x9001
 +#endif
 +
 +#ifndef SO_PASSCRED
 +#  define SO_PASSCRED      0x9002
 +#endif
 +
  #if !defined(OS_NACL_NONSFI)
  bool CreateSocketPair(ScopedFD* one, ScopedFD* two) {
    int raw_socks[2];
-@@ -150,7 +161,7 @@ ssize_t UnixDomainSocket::RecvMsgWithFlags(int fd,
- #if !defined(OS_NACL_NONSFI) && !defined(OS_MACOSX)
+@@ -151,7 +162,7 @@ ssize_t UnixDomainSocket::RecvMsgWithFlags(int fd,
+ #if !defined(OS_NACL_NONSFI) && !defined(OS_APPLE)
        // The PNaCl toolchain for Non-SFI binary build and macOS do not support
        // ucred. macOS supports xucred, but this structure is insufficient.
 -      + CMSG_SPACE(sizeof(struct ucred))
 +      + CMSG_SPACE(sizeof(struct cmsgcred))
- #endif  // OS_NACL_NONSFI or OS_MACOSX
+ #endif  // !defined(OS_NACL_NONSFI) && !defined(OS_APPLE)
        ;
    char control_buffer[kControlBufferSize];
-@@ -180,9 +191,9 @@ ssize_t UnixDomainSocket::RecvMsgWithFlags(int fd,
+@@ -181,9 +192,9 @@ ssize_t UnixDomainSocket::RecvMsgWithFlags(int fd,
        // SCM_CREDENTIALS.
        if (cmsg->cmsg_level == SOL_SOCKET &&
            cmsg->cmsg_type == SCM_CREDENTIALS) {
 -        DCHECK_EQ(payload_len, sizeof(struct ucred));
 +        DCHECK_EQ(payload_len, sizeof(struct cmsgcred));
          DCHECK_EQ(pid, -1);
 -        pid = reinterpret_cast<struct ucred*>(CMSG_DATA(cmsg))->pid;
-+	pid = getpid();
++        pid = getpid();
        }
- #endif  // !defined(OS_NACL_NONSFI) && !defined(OS_MACOSX)
+ #endif  // !defined(OS_NACL_NONSFI) && !defined(OS_APPLE)
      }
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_posix_unix__domain__socket__unittest.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_posix_unix__domain__socket__unittest.cc
deleted file mode 100644
index 00e6f87bdcc9..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_posix_unix__domain__socket__unittest.cc
+++ /dev/null
@@ -1,12 +0,0 @@
---- src/3rdparty/chromium/base/posix/unix_domain_socket_unittest.cc.orig	2018-11-13 18:25:11 UTC
-+++ src/3rdparty/chromium/base/posix/unix_domain_socket_unittest.cc
-@@ -8,6 +8,9 @@
- #include <stdint.h>
- #include <sys/socket.h>
- #include <sys/types.h>
-+#if defined(OS_BSD)
-+#include <signal.h>
-+#endif
- #include <unistd.h>
- 
- #include "base/bind.h"
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_internal__linux.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_internal__linux.cc
index 536a8516b3c0..244c17d754bb 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_internal__linux.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_internal__linux.cc
@@ -1,97 +1,97 @@
---- src/3rdparty/chromium/base/process/internal_linux.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/base/process/internal_linux.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/process/internal_linux.cc
-@@ -29,7 +29,11 @@ namespace internal {
+@@ -30,7 +30,11 @@ const char kProcDir[] = "/proc";
  
  const char kProcDir[] = "/proc";
  
 +#if defined(OS_BSD)
 +const char kStatFile[] = "status";
 +#else
  const char kStatFile[] = "stat";
 +#endif
  
  FilePath GetProcPidDir(pid_t pid) {
    return FilePath(kProcDir).Append(NumberToString(pid));
-@@ -64,6 +68,7 @@ bool ReadProcFile(const FilePath& file, std::string* b
+@@ -66,6 +70,7 @@ bool ReadProcFile(const FilePath& file, std::string* b
      DLOG(WARNING) << "Failed to read " << file.MaybeAsASCII();
      return false;
    }
 +
    return !buffer->empty();
  }
  
-@@ -79,6 +84,22 @@ bool ParseProcStats(const std::string& stats_data,
+@@ -81,6 +86,22 @@ bool ParseProcStats(const std::string& stats_data,
    if (stats_data.empty())
      return false;
  
 +#if defined(OS_BSD)
 +  proc_stats->clear();
 +
 +  std::vector<std::string> other_stats = SplitString(
 +      stats_data, " ", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
 +
 +  for (const auto& i : other_stats) {
 +    auto pos = i.find(',');
 +
 +    if (pos == std::string::npos) {
 +      proc_stats->push_back(i);
 +    } else {
 +      proc_stats->push_back(i.substr(0, pos));
 +    }
 +  }
 +#else
    // The stat file is formatted as:
    // pid (process name) data1 data2 .... dataN
    // Look for the closing paren by scanning backwards, to avoid being fooled by
-@@ -108,6 +129,7 @@ bool ParseProcStats(const std::string& stats_data,
+@@ -110,6 +131,7 @@ bool ParseProcStats(const std::string& stats_data,
        base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
    for (const auto& i : other_stats)
      proc_stats->push_back(i);
 +#endif
    return true;
  }
  
-@@ -155,7 +177,11 @@ int64_t ReadProcStatsAndGetFieldAsInt64(pid_t pid, Pro
+@@ -157,7 +179,11 @@ int64_t ReadProcSelfStatsAndGetFieldAsInt64(ProcStatsF
  }
  
  int64_t ReadProcSelfStatsAndGetFieldAsInt64(ProcStatsFields field_num) {
 +#if defined(OS_BSD)
 +  FilePath stat_file = FilePath(kProcDir).Append("curproc").Append(kStatFile);
 +#else
    FilePath stat_file = FilePath(kProcDir).Append("self").Append(kStatFile);
 +#endif
    return ReadStatFileAndGetFieldAsInt64(stat_file, field_num);
  }
  
-@@ -171,6 +197,9 @@ size_t ReadProcStatsAndGetFieldAsSizeT(pid_t pid,
+@@ -173,6 +199,9 @@ Time GetBootTime() {
  }
  
  Time GetBootTime() {
 +#if defined(OS_BSD)
 +  return Time();
 +#else
    FilePath path("/proc/stat");
    std::string contents;
    if (!ReadProcFile(path, &contents))
-@@ -184,9 +213,13 @@ Time GetBootTime() {
+@@ -186,9 +215,13 @@ Time GetBootTime() {
    if (!StringToInt(btime_it->second, &btime))
      return Time();
    return Time::FromTimeT(btime);
 +#endif
  }
  
  TimeDelta GetUserCpuTimeSinceBoot() {
 +#if defined(OS_BSD)
 +  return TimeDelta();
 +#else
    FilePath path("/proc/stat");
    std::string contents;
    if (!ReadProcFile(path, &contents))
-@@ -210,6 +243,7 @@ TimeDelta GetUserCpuTimeSinceBoot() {
+@@ -212,6 +245,7 @@ TimeDelta GetUserCpuTimeSinceBoot() {
      return TimeDelta();
  
    return ClockTicksToTimeDelta(user + nice);
 +#endif
  }
  
  TimeDelta ClockTicksToTimeDelta(int clock_ticks) {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_internal__linux.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_internal__linux.h
index 22e69ac74cc0..456448938743 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_internal__linux.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_internal__linux.h
@@ -1,34 +1,34 @@
---- src/3rdparty/chromium/base/process/internal_linux.h.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/base/process/internal_linux.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/process/internal_linux.h
-@@ -14,6 +14,8 @@
- 
- #include "base/files/file_path.h"
+@@ -18,6 +18,8 @@
+ #include "base/strings/string_number_conversions.h"
+ #include "base/threading/platform_thread.h"
  
 +#include <unistd.h> /* pid_t */
 +
  namespace base {
  
  class Time;
-@@ -50,6 +52,14 @@ bool ParseProcStats(const std::string& stats_data,
+@@ -59,6 +61,14 @@ enum ProcStatsFields {
  // If the ordering ever changes, carefully review functions that use these
  // values.
  enum ProcStatsFields {
 +#if defined(OS_BSD)
 +  VM_COMM = 0,         // Command name.
 +  VM_PPID = 2,         // Parent process id.
 +  VM_PGRP = 3,         // Process group id.
 +  VM_STARTTIME = 7,    // The process start time.
 +  VM_UTIME = 8,        // The user time.
 +  VM_STIME = 9,        // The system time
 +#else
    VM_COMM = 1,         // Filename of executable, without parentheses.
    VM_STATE = 2,        // Letter indicating the state of the process.
    VM_PPID = 3,         // PID of the parent.
-@@ -62,6 +72,7 @@ enum ProcStatsFields {
+@@ -71,6 +81,7 @@ enum ProcStatsFields {
    VM_STARTTIME = 21,   // The time the process started in clock ticks.
    VM_VSIZE = 22,       // Virtual memory size in bytes.
    VM_RSS = 23,         // Resident Set Size in pages.
 +#endif
  };
  
  // Reads the |field_num|th field from |proc_stats|. Returns 0 on failure.
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_kill.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_kill.h
index 212c9e0fa508..d0e3f90ef9d2 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_kill.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_kill.h
@@ -1,11 +1,16 @@
---- src/3rdparty/chromium/base/process/kill.h.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/base/process/kill.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/process/kill.h
-@@ -111,7 +111,7 @@ BASE_EXPORT TerminationStatus GetTerminationStatus(Pro
+@@ -113,11 +113,11 @@ BASE_EXPORT TerminationStatus GetKnownDeadTerminationS
  BASE_EXPORT TerminationStatus GetKnownDeadTerminationStatus(
      ProcessHandle handle, int* exit_code);
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  // Spawns a thread to wait asynchronously for the child |process| to exit
  // and then reaps it.
  BASE_EXPORT void EnsureProcessGetsReaped(Process process);
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #endif  // defined(OS_POSIX)
+ 
+ // Registers |process| to be asynchronously monitored for termination, forcibly
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_kill__posix.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_kill__posix.cc
index 872646558dbb..0c63fa2ad1dc 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_kill__posix.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_kill__posix.cc
@@ -1,11 +1,20 @@
---- src/3rdparty/chromium/base/process/kill_posix.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/base/process/kill_posix.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/process/kill_posix.cc
-@@ -167,7 +167,7 @@ void EnsureProcessTerminated(Process process) {
+@@ -160,7 +160,7 @@ void EnsureProcessTerminated(Process process) {
        0, new BackgroundReaper(std::move(process), TimeDelta::FromSeconds(2)));
  }
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  void EnsureProcessGetsReaped(Process process) {
    DCHECK(!process.is_current());
  
+@@ -171,7 +171,7 @@ void EnsureProcessGetsReaped(Process process) {
+   PlatformThread::CreateNonJoinable(
+       0, new BackgroundReaper(std::move(process), TimeDelta()));
+ }
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ 
+ #endif  // !defined(OS_APPLE)
+ #endif  // !defined(OS_NACL_NONSFI)
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_launch.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_launch.cc
index b663e8c6d674..00a9d0e07265 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_launch.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_launch.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/base/process/launch.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/base/process/launch.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/process/launch.cc
-@@ -15,7 +15,7 @@ LaunchOptions::~LaunchOptions() = default;
+@@ -15,7 +15,7 @@ LaunchOptions LaunchOptionsForTest() {
  
  LaunchOptions LaunchOptionsForTest() {
    LaunchOptions options;
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    // To prevent accidental privilege sharing to an untrusted child, processes
    // are started with PR_SET_NO_NEW_PRIVS. Do not set that here, since this
    // new child will be used for testing only.
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_launch.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_launch.h
index 3f0e1db51042..0ee76d96e2f7 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_launch.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_launch.h
@@ -1,20 +1,29 @@
---- src/3rdparty/chromium/base/process/launch.h.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/base/process/launch.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/process/launch.h
-@@ -171,7 +171,7 @@ struct BASE_EXPORT LaunchOptions {
-   FileHandleMappingVector fds_to_remap;
- #endif  // defined(OS_WIN)
+@@ -180,7 +180,7 @@ struct BASE_EXPORT LaunchOptions {
+   bool clear_environment = false;
+ #endif  // OS_WIN || OS_POSIX || OS_FUCHSIA
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    // 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
-@@ -184,7 +184,7 @@ struct BASE_EXPORT LaunchOptions {
+@@ -193,7 +193,7 @@ struct BASE_EXPORT LaunchOptions {
  
    // Sets parent process death signal to SIGKILL.
    bool kill_on_parent_death = false;
--#endif  // defined(OS_LINUX)
-+#endif  // defined(OS_LINUX) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
- #if defined(OS_FUCHSIA)
-   // If valid, launches the application in that job object.
+ #if defined(OS_MAC)
+   // Mach ports that will be accessible to the child process. These are not
+@@ -408,7 +408,7 @@ BASE_EXPORT LaunchOptions LaunchOptionsForTest();
+ // binary. This should not be called in production/released code.
+ BASE_EXPORT LaunchOptions LaunchOptionsForTest();
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_NACL_NONSFI)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_NACL_NONSFI) || defined(OS_BSD)
+ // A wrapper for clone with fork-like behavior, meaning that it returns the
+ // child's pid in the parent and 0 in the child. |flags|, |ptid|, and |ctid| are
+ // as in the clone system call (the CLONE_VM flag is not supported).
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_launch__posix.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_launch__posix.cc
index 7707a66a78bb..d84fed44853c 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_launch__posix.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_launch__posix.cc
@@ -1,10 +1,39 @@
---- src/3rdparty/chromium/base/process/launch_posix.cc.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/base/process/launch_posix.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/process/launch_posix.cc
-@@ -64,6 +64,7 @@
+@@ -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/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_memory.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_memory.cc
index e46078fe2f71..861beab959ae 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_memory.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_memory.cc
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/base/process/memory.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/base/process/memory.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/process/memory.cc
-@@ -10,7 +10,7 @@
- namespace base {
+@@ -55,7 +55,7 @@ NOINLINE void OnNoMemoryInternal(size_t size) {
+ }  // namespace internal
  
  // Defined in memory_win.cc for Windows.
 -#if !defined(OS_WIN)
 +#if !defined(OS_WIN) && !defined(OS_BSD)
  
  namespace {
  
-@@ -31,7 +31,7 @@ void TerminateBecauseOutOfMemory(size_t size) {
- #endif
+@@ -74,7 +74,7 @@ void TerminateBecauseOutOfMemory(size_t size) {
+ #endif  // !defined(OS_WIN)
  
  // Defined in memory_mac.mm for Mac.
--#if !defined(OS_MACOSX)
-+#if !defined(OS_MACOSX) && !defined(OS_BSD)
+-#if !defined(OS_APPLE)
++#if !defined(OS_APPLE) && !defined(OS_BSD)
  
  bool UncheckedCalloc(size_t num_items, size_t size, void** result) {
    const size_t alloc_size = num_items * size;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_memory.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_memory.h
index 30db955cf7ac..fff5b11fed1a 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_memory.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_memory.h
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/base/process/memory.h.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/base/process/memory.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/process/memory.h
-@@ -32,7 +32,7 @@ BASE_EXPORT void EnableTerminationOnOutOfMemory();
+@@ -24,7 +24,7 @@ BASE_EXPORT void TerminateBecauseOutOfMemory(size_t si
  // Crash reporting classifies such crashes as OOM.
  BASE_EXPORT void TerminateBecauseOutOfMemory(size_t size);
  
--#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX)
-+#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) || 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_AIX)
  BASE_EXPORT extern size_t g_oom_size;
  
- // The maximum allowed value for the OOM score.
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_memory__unittest.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_memory__unittest.cc
deleted file mode 100644
index 4debdc39382d..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_memory__unittest.cc
+++ /dev/null
@@ -1,18 +0,0 @@
---- src/3rdparty/chromium/base/process/memory_unittest.cc.orig	2018-11-13 18:25:11 UTC
-+++ src/3rdparty/chromium/base/process/memory_unittest.cc
-@@ -104,7 +104,7 @@ TEST(MemoryTest, AllocatorShimWorking) {
- // OpenBSD does not support these tests. Don't test these on ASan/TSan/MSan
- // configurations: only test the real allocator.
- // Windows only supports these tests with the allocator shim in place.
--#if !defined(OS_OPENBSD) && BUILDFLAG(USE_ALLOCATOR_SHIM) && \
-+#if !defined(OS_BSD) && BUILDFLAG(USE_ALLOCATOR_SHIM) && \
-     !defined(MEMORY_TOOL_REPLACES_ALLOCATOR)
- 
- namespace {
-@@ -529,5 +529,5 @@ TEST_F(OutOfMemoryHandledTest, UncheckedCalloc) {
-   EXPECT_FALSE(base::UncheckedCalloc(1, test_size_, &value_));
-   EXPECT_TRUE(value_ == nullptr);
- }
--#endif  // !defined(OS_OPENBSD) && BUILDFLAG(ENABLE_WIN_ALLOCATOR_SHIM_TESTS) &&
-+#endif  // !defined(OS_BSD) && BUILDFLAG(ENABLE_WIN_ALLOCATOR_SHIM_TESTS) &&
-         // !defined(MEMORY_TOOL_REPLACES_ALLOCATOR)
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_process__handle.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_process__handle.cc
index 4219aa5a6ca4..56d3b9a92a77 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_process__handle.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_process__handle.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/base/process/process_handle.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/base/process/process_handle.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/process/process_handle.cc
-@@ -39,7 +39,7 @@ uint32_t GetUniqueIdForProcess() {
-   return g_unique_id;
+@@ -30,7 +30,7 @@ UniqueProcId GetUniqueIdForProcess() {
+              : UniqueProcId(GetCurrentProcId());
  }
  
--#if defined(OS_LINUX) || defined(OS_AIX)
-+#if defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_AIX)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_AIX) || defined(OS_BSD)
  
  void InitUniqueIdForProcessInPidNamespace(ProcessId pid_outside_of_namespace) {
-   g_unique_id = MangleProcessId(pid_outside_of_namespace);
+   DCHECK(pid_outside_of_namespace != kNullProcessId);
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_process__handle.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_process__handle.h
index 38af4532258a..acf0a3b24727 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_process__handle.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_process__handle.h
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/base/process/process_handle.h.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/base/process/process_handle.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/process/process_handle.h
-@@ -64,7 +64,7 @@ BASE_EXPORT ProcessId GetCurrentProcId();
- // a process's PID.
- BASE_EXPORT uint32_t GetUniqueIdForProcess();
+@@ -103,7 +103,7 @@ BASE_EXPORT UniqueProcId GetUniqueIdForProcess();
+ // processes may be reused.
+ BASE_EXPORT UniqueProcId GetUniqueIdForProcess();
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  // When a process is started in a different PID namespace from the browser
  // process, this function must be called with the process's PID in the browser's
  // PID namespace in order to initialize its unique ID. Not thread safe.
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_process__linux.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_process__linux.cc
index a239e89b6e00..32184643371a 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_process__linux.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_process__linux.cc
@@ -1,31 +1,48 @@
---- src/3rdparty/chromium/base/process/process_linux.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/base/process/process_linux.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/process/process_linux.cc
-@@ -79,6 +79,9 @@ Time Process::CreationTime() const {
-                                   internal::VM_STARTTIME)
-                             : internal::ReadProcStatsAndGetFieldAsInt64(
-                                   Pid(), internal::VM_STARTTIME);
+@@ -24,7 +24,9 @@ namespace {
+ 
+ namespace {
+ 
++#if !defined(OS_BSD)
+ const int kForegroundPriority = 0;
++#endif
+ 
+ #if defined(OS_CHROMEOS) || BUILDFLAG(IS_LACROS)
+ // We are more aggressive in our lowering of background process priority
+@@ -69,7 +71,7 @@ struct CGroups {
+     return groups;
+   }
+ };
+-#else
++#elif !defined(OS_BSD)
+ const int kBackgroundPriority = 5;
+ #endif  // defined(OS_CHROMEOS) || BUILDFLAG(IS_LACROS)
+ 
+@@ -96,13 +98,18 @@ Time Process::CreationTime() const {
+   if (!start_ticks)
+     return Time();
+ 
 +#if defined(OS_BSD)
 +  return Time::FromTimeT(start_ticks);
 +#else
-   if (!start_ticks)
-     return Time();
    TimeDelta start_offset = internal::ClockTicksToTimeDelta(start_ticks);
-@@ -86,8 +89,10 @@ Time Process::CreationTime() const {
+   Time boot_time = internal::GetBootTime();
    if (boot_time.is_null())
      return Time();
    return Time(boot_time + start_offset);
 +#endif
  }
  
 +#if !defined(OS_BSD)
  // static
  bool Process::CanBackgroundProcesses() {
- #if defined(OS_CHROMEOS)
-@@ -139,6 +144,7 @@ bool Process::SetProcessBackgrounded(bool background) 
+ #if defined(OS_CHROMEOS) || BUILDFLAG(IS_LACROS)
+@@ -154,6 +161,7 @@ bool Process::SetProcessBackgrounded(bool background) 
    DPCHECK(result == 0);
    return result == 0;
  }
 +#endif // !defined(OS_BSD)
  
- #if defined(OS_CHROMEOS)
+ #if defined(OS_CHROMEOS) || BUILDFLAG(IS_LACROS)
  bool IsProcessBackgroundedCGroup(const StringPiece& cgroup_contents) {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_process__metrics.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_process__metrics.cc
index 5d2d57979c0a..d145178272f2 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_process__metrics.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_process__metrics.cc
@@ -1,38 +1,38 @@
---- src/3rdparty/chromium/base/process/process_metrics.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/base/process/process_metrics.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/process/process_metrics.cc
-@@ -57,7 +57,7 @@ SystemMetrics SystemMetrics::Sample() {
+@@ -49,7 +49,7 @@ SystemMetrics SystemMetrics::Sample() {
    SystemMetrics system_metrics;
  
    system_metrics.committed_memory_ = GetSystemCommitCharge();
--#if defined(OS_LINUX) || defined(OS_ANDROID)
-+#if defined(OS_LINUX) || 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)
    GetSystemMemoryInfo(&system_metrics.memory_info_);
    GetVmStatInfo(&system_metrics.vmstat_info_);
    GetSystemDiskInfo(&system_metrics.disk_info_);
-@@ -75,7 +75,7 @@ std::unique_ptr<Value> SystemMetrics::ToValue() const 
+@@ -68,7 +68,7 @@ std::unique_ptr<Value> SystemMetrics::ToValue() const 
    std::unique_ptr<DictionaryValue> res(new DictionaryValue());
  
    res->SetIntKey("committed_memory", static_cast<int>(committed_memory_));
--#if defined(OS_LINUX) || defined(OS_ANDROID)
-+#if defined(OS_LINUX) || 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)
    std::unique_ptr<DictionaryValue> meminfo = memory_info_.ToValue();
    std::unique_ptr<DictionaryValue> vmstat = vmstat_info_.ToValue();
    meminfo->MergeDictionary(vmstat.get());
-@@ -126,7 +126,7 @@ double ProcessMetrics::GetPlatformIndependentCPUUsage(
+@@ -119,7 +119,7 @@ double ProcessMetrics::GetPlatformIndependentCPUUsage(
  }
  #endif
  
--#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX)
-+#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || 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) || \
+     defined(OS_AIX)
  int ProcessMetrics::CalculateIdleWakeupsPerSecond(
      uint64_t absolute_idle_wakeups) {
-   return CalculateEventsPerSecond(absolute_idle_wakeups,
-@@ -138,7 +138,7 @@ int ProcessMetrics::GetIdleWakeupsPerSecond() {
+@@ -132,7 +132,7 @@ int ProcessMetrics::GetIdleWakeupsPerSecond() {
    NOTIMPLEMENTED();  // http://crbug.com/120488
    return 0;
  }
--#endif  // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX)
-+#endif  // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+-#endif  // defined(OS_APPLE) || defined(OS_LINUX) || defined(OS_CHROMEOS) ||
++#endif  // defined(OS_APPLE) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) ||
+         // defined(OS_AIX)
  
- #if defined(OS_MACOSX)
- int ProcessMetrics::CalculatePackageIdleWakeupsPerSecond(
+ #if defined(OS_APPLE)
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_process__metrics.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_process__metrics.h
index 2df8b171a04a..104309d6f874 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_process__metrics.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_process__metrics.h
@@ -1,131 +1,163 @@
---- src/3rdparty/chromium/base/process/process_metrics.h.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/base/process/process_metrics.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/process/process_metrics.h
-@@ -41,7 +41,7 @@ namespace base {
+@@ -47,7 +47,7 @@ struct IoCounters;
  // Full declaration is in process_metrics_iocounters.h.
  struct IoCounters;
  
--#if defined(OS_LINUX) || defined(OS_ANDROID)
-+#if defined(OS_LINUX) || 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)
  // Minor and major page fault counts since the process creation.
  // Both counts are process-wide, and exclude child processes.
  //
-@@ -51,7 +51,7 @@ struct PageFaultCounts {
+@@ -57,7 +57,7 @@ struct PageFaultCounts {
    int64_t minor;
    int64_t major;
  };
--#endif  // defined(OS_LINUX) || defined(OS_ANDROID)
-+#endif  // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
  
  // Convert a POSIX timeval to microseconds.
  BASE_EXPORT int64_t TimeValToMicroseconds(const struct timeval& tv);
-@@ -92,7 +92,7 @@ class BASE_EXPORT ProcessMetrics {
+@@ -98,7 +98,7 @@ class BASE_EXPORT ProcessMetrics {
    // convenience wrapper for CreateProcessMetrics().
    static std::unique_ptr<ProcessMetrics> CreateCurrentProcessMetrics();
  
--#if defined(OS_LINUX) || defined(OS_ANDROID)
-+#if defined(OS_LINUX) || 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)
    // Resident Set Size is a Linux/Android specific memory concept. Do not
    // attempt to extend this to other platforms.
    BASE_EXPORT size_t GetResidentSetSize() const;
-@@ -168,14 +168,14 @@ class BASE_EXPORT ProcessMetrics {
+@@ -124,7 +124,7 @@ class BASE_EXPORT ProcessMetrics {
+   // will result in a time delta of 2 seconds/per 1 wall-clock second.
+   TimeDelta GetCumulativeCPUUsage();
+ 
+-#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_AIX)
+   // Emits the cumulative CPU usage for all currently active threads since they
+   // were started into the output parameter (replacing its current contents).
+@@ -159,7 +159,7 @@ class BASE_EXPORT ProcessMetrics {
+   bool ParseProcTimeInState(const std::string& content,
+                             PlatformThreadId tid,
+                             TimeInStatePerThread& time_in_state_per_thread);
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) ||
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD) ||
+         // defined(OS_AIX)
+ 
+   // Returns the number of average idle cpu wakeups per second since the last
+@@ -216,14 +216,14 @@ class BASE_EXPORT ProcessMetrics {
    int GetOpenFdSoftLimit() const;
  #endif  // defined(OS_POSIX)
  
--#if defined(OS_LINUX) || defined(OS_ANDROID)
-+#if defined(OS_LINUX) || 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)
    // Bytes of swap as reported by /proc/[pid]/status.
    uint64_t GetVmSwapBytes() const;
  
    // Minor and major page fault count as reported by /proc/[pid]/stat.
    // Returns true for success.
    bool GetPageFaultCounts(PageFaultCounts* counts) const;
--#endif  // defined(OS_LINUX) || defined(OS_ANDROID)
-+#endif  // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
  
    // Returns total memory usage of malloc.
    size_t GetMallocUsage();
-@@ -187,7 +187,7 @@ class BASE_EXPORT ProcessMetrics {
+@@ -235,7 +235,7 @@ class BASE_EXPORT ProcessMetrics {
    ProcessMetrics(ProcessHandle process, PortProvider* port_provider);
- #endif  // !defined(OS_MACOSX) || defined(OS_IOS)
+ #endif  // !defined(OS_MAC)
  
--#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX)
-+#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || 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) || \
+     defined(OS_AIX)
    int CalculateIdleWakeupsPerSecond(uint64_t absolute_idle_wakeups);
  #endif
- #if defined(OS_MACOSX)
-@@ -216,7 +216,7 @@ class BASE_EXPORT ProcessMetrics {
+@@ -246,10 +246,10 @@ class BASE_EXPORT ProcessMetrics {
+       uint64_t absolute_package_idle_wakeups);
+ #endif
+ 
+-#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_AIX)
+   CPU::CoreType GetCoreType(int core_index);
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) ||
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD) ||
+         // defined(OS_AIX)
+ 
+ #if defined(OS_WIN)
+@@ -271,7 +271,7 @@ class BASE_EXPORT ProcessMetrics {
    // Number of bytes transferred to/from disk in bytes.
    uint64_t last_cumulative_disk_usage_ = 0;
  
--#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX)
-+#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || 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) || \
+     defined(OS_AIX)
    // Same thing for idle wakeups.
    TimeTicks last_idle_wakeups_time_;
-   uint64_t last_absolute_idle_wakeups_;
-@@ -264,7 +264,7 @@ BASE_EXPORT size_t GetHandleLimit();
+@@ -323,7 +323,7 @@ BASE_EXPORT void IncreaseFdLimitTo(unsigned int max_de
  BASE_EXPORT void IncreaseFdLimitTo(unsigned int max_descriptors);
  #endif  // defined(OS_POSIX)
  
--#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
-+#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \
-     defined(OS_ANDROID) || defined(OS_AIX) || 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_ANDROID) || defined(OS_AIX) || \
+     defined(OS_FUCHSIA)
  // Data about system-wide memory consumption. Values are in KB. Available on
- // Windows, Mac, Linux, Android and Chrome OS.
-@@ -298,7 +298,7 @@ struct BASE_EXPORT SystemMemoryInfoKB {
+@@ -358,7 +358,7 @@ struct BASE_EXPORT SystemMemoryInfoKB {
    int avail_phys = 0;
  #endif
  
--#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX)
-+#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) || 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_AIX)
    // This provides an estimate of available memory as described here:
    // https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=34e431b0ae398fc54ea69ff85ec700722c9da773
-   // NOTE: this is ONLY valid in kernels 3.14 and up.  Its value will always
-@@ -312,7 +312,7 @@ struct BASE_EXPORT SystemMemoryInfoKB {
+@@ -373,7 +373,7 @@ struct BASE_EXPORT SystemMemoryInfoKB {
    int swap_free = 0;
  #endif
  
--#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_AIX) || \
-+#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD) || \
-     defined(OS_FUCHSIA)
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) || \
+     defined(OS_AIX) || defined(OS_FUCHSIA)
    int buffers = 0;
    int cached = 0;
-@@ -322,7 +322,7 @@ struct BASE_EXPORT SystemMemoryInfoKB {
+@@ -383,7 +383,7 @@ struct BASE_EXPORT SystemMemoryInfoKB {
    int inactive_file = 0;
    int dirty = 0;
    int reclaimable = 0;
--#endif  // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_AIX) ||
-+#endif  // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD) ||
-         // defined(OS_FUCHSIA)
+-#endif  // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) ||
++#endif  // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) ||
+         // defined(OS_AIX) defined(OS_FUCHSIA)
  
- #if defined(OS_CHROMEOS)
-@@ -348,10 +348,10 @@ struct BASE_EXPORT SystemMemoryInfoKB {
+ #if defined(OS_CHROMEOS) || BUILDFLAG(IS_LACROS)
+@@ -406,11 +406,11 @@ BASE_EXPORT bool GetSystemMemoryInfo(SystemMemoryInfoK
  // Exposed for memory debugging widget.
  BASE_EXPORT bool GetSystemMemoryInfo(SystemMemoryInfoKB* meminfo);
  
--#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ||
-+#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
-         // defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_FUCHSIA)
+-#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) defined(OS_ANDROID) || defined(OS_AIX) ||
+         // defined(OS_FUCHSIA)
  
--#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX)
-+#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) || 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_AIX)
  // Parse the data found in /proc/<pid>/stat and return the sum of the
  // CPU-related ticks.  Returns -1 on parse error.
- // Exposed for testing.
-@@ -424,7 +424,7 @@ BASE_EXPORT bool GetSystemDiskInfo(SystemDiskInfo* dis
+@@ -485,7 +485,7 @@ BASE_EXPORT TimeDelta GetUserCpuTimeSinceBoot();
  // Returns the amount of time spent in user space since boot across all CPUs.
  BASE_EXPORT TimeDelta GetUserCpuTimeSinceBoot();
  
--#endif  // defined(OS_LINUX) || defined(OS_ANDROID)
-+#endif  // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) ||
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD) ||
+         // defined(OS_AIX)
  
- #if defined(OS_CHROMEOS)
- // Data from files in directory /sys/block/zram0 about ZRAM usage.
-@@ -519,7 +519,7 @@ class BASE_EXPORT SystemMetrics {
+ #if defined(OS_CHROMEOS) || BUILDFLAG(IS_LACROS)
+@@ -597,7 +597,7 @@ class BASE_EXPORT SystemMetrics {
    FRIEND_TEST_ALL_PREFIXES(SystemMetricsTest, SystemMetrics);
  
    size_t committed_memory_;
--#if defined(OS_LINUX) || defined(OS_ANDROID)
-+#if defined(OS_LINUX) || 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)
    SystemMemoryInfoKB memory_info_;
    VmStatInfo vmstat_info_;
    SystemDiskInfo disk_info_;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_process__metrics__freebsd.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_process__metrics__freebsd.cc
index 7fa8c5cd382b..dded3805a4ce 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_process__metrics__freebsd.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_process__metrics__freebsd.cc
@@ -1,259 +1,262 @@
---- src/3rdparty/chromium/base/process/process_metrics_freebsd.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/base/process/process_metrics_freebsd.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/process/process_metrics_freebsd.cc
-@@ -5,6 +5,7 @@
+@@ -3,8 +3,10 @@
+ // found in the LICENSE file.
+ 
  #include "base/process/process_metrics.h"
++#include "base/notreached.h"
  
  #include <stddef.h>
 +#include <sys/types.h>
  #include <sys/sysctl.h>
  #include <sys/user.h>
  #include <unistd.h>
-@@ -14,11 +15,29 @@
+@@ -14,11 +16,29 @@
  #include "base/process/process_metrics_iocounters.h"
  #include "base/stl_util.h"
  
 +#include <unistd.h> /* getpagesize() */
 +#include <fcntl.h>  /* O_RDONLY */
 +#include <kvm.h>
 +#include <libutil.h>
 +
  namespace base {
 +namespace {
  
 +int GetPageShift() {
 +  int pagesize = getpagesize();
 +  int pageshift = 0;
 +
 +  while (pagesize > 1) {
 +    pageshift++;
 +    pagesize >>= 1;
 +  }
 +
 +  return pageshift;
 +}
 +}
 +
  ProcessMetrics::ProcessMetrics(ProcessHandle process)
 -    : process_(process),
 -      last_cpu_(0) {}
 +    : process_(process) {}
  
  // static
  std::unique_ptr<ProcessMetrics> ProcessMetrics::CreateProcessMetrics(
-@@ -69,4 +88,216 @@ size_t GetSystemCommitCharge() {
+@@ -69,4 +89,216 @@ size_t GetSystemCommitCharge() {
    return mem_total - (mem_free*pagesize) - (mem_inactive*pagesize);
  }
  
 +int GetNumberOfThreads(ProcessHandle process) {
 +  // Taken from FreeBSD top (usr.bin/top/machine.c)
 +
 +  kvm_t* kd = kvm_open(NULL, "/dev/null", NULL, O_RDONLY, "kvm_open");
 +  if (kd == NULL)
 +    return 0;
 +
 +  struct kinfo_proc* pbase;
 +  int nproc;
 +  pbase = kvm_getprocs(kd, KERN_PROC_PID, process, &nproc);
 +  if (pbase == NULL)
 +    return 0;
 +
 +  if (kvm_close(kd) == -1)
 +    return 0;
 +
 +  return nproc;
 +}
 +
 +bool GetSystemMemoryInfo(SystemMemoryInfoKB *meminfo) {
 +  unsigned int mem_total, mem_free, swap_total, swap_used;
 +  size_t length;
 +  int pagesizeKB;
 +
 +  pagesizeKB = getpagesize() / 1024;
 +
 +  length = sizeof(mem_total);
 +  if (sysctlbyname("vm.stats.vm.v_page_count", &mem_total,
 +      &length, NULL, 0) != 0 || length != sizeof(mem_total))
 +    return false;
 +
 +  length = sizeof(mem_free);
 +  if (sysctlbyname("vm.stats.vm.v_free_count", &mem_free, &length, NULL, 0)
 +      != 0 || length != sizeof(mem_free))
 +    return false;
 +
 +  length = sizeof(swap_total);
 +  if (sysctlbyname("vm.swap_size", &swap_total, &length, NULL, 0)
 +      != 0 || length != sizeof(swap_total))
 +    return false;
 +
 +  length = sizeof(swap_used);
 +  if (sysctlbyname("vm.swap_anon_use", &swap_used, &length, NULL, 0)
 +      != 0 || length != sizeof(swap_used))
 +    return false;
 +
 +  meminfo->total = mem_total * pagesizeKB;
 +  meminfo->free = mem_free * pagesizeKB;
 +  meminfo->swap_total = swap_total * pagesizeKB;
 +  meminfo->swap_free = (swap_total - swap_used) * pagesizeKB;
 +
 +  return true;
 +}
 +
 +int ProcessMetrics::GetOpenFdCount() const {
 +  struct kinfo_file * kif;
 +  int cnt;
 +
 +  if ((kif = kinfo_getfile(process_, &cnt)) == NULL)
 +    return -1;
 +
 +  free(kif);
 +
 +  return cnt;
 +}
 +
 +int ProcessMetrics::GetOpenFdSoftLimit() const {
 +  size_t length;
 +  int total_count = 0;
 +  int mib[] = { CTL_KERN, KERN_MAXFILESPERPROC };
 +
 +  length = sizeof(total_count);
 +
 +  if (sysctl(mib, base::size(mib), &total_count, &length, NULL, 0) < 0) {
 +    total_count = -1;
 +  }
 +
 +  return total_count;
 +}
 +
 +size_t ProcessMetrics::GetResidentSetSize() const {
 +  kvm_t *kd = kvm_open(nullptr, "/dev/null", nullptr, O_RDONLY, "kvm_open");
 +
 +  if (kd == nullptr)
 +    return 0;
 +
 +  struct kinfo_proc *pp;
 +  int nproc;
 +
 +  if ((pp = kvm_getprocs(kd, KERN_PROC_PID, process_, &nproc)) == nullptr) {
 +    kvm_close(kd);
 +    return 0;
 +  }
 +  
 +  size_t rss;
 +
 +  if (nproc > 0) {
 +    rss = pp->ki_rssize << GetPageShift();
 +  } else {
 +    rss = 0;
 +  }
 +
 +  kvm_close(kd);
 +  return rss;
 +}
 +
 +uint64_t ProcessMetrics::GetVmSwapBytes() const {
 +  kvm_t *kd = kvm_open(nullptr, "/dev/null", nullptr, O_RDONLY, "kvm_open");
 +
 +  if (kd == nullptr)
 +    return 0;
 +
 +  struct kinfo_proc *pp;
 +  int nproc;
 +
 +  if ((pp = kvm_getprocs(kd, KERN_PROC_PID, process_, &nproc)) == nullptr) {
 +    kvm_close(kd);
 +    return 0;
 +  }
 +  
 +  size_t swrss;
 +
 +  if (nproc > 0) {
 +    swrss = pp->ki_swrss > pp->ki_rssize
 +      ? (pp->ki_swrss - pp->ki_rssize) << GetPageShift()
 +      : 0;
 +  } else {
 +    swrss = 0;
 +  }
 +
 +  kvm_close(kd);
 +  return swrss;
 +}
 +
 +int ProcessMetrics::GetIdleWakeupsPerSecond() {
 +  NOTIMPLEMENTED();
 +  return 0;
 +}
 +
 +bool GetSystemDiskInfo(SystemDiskInfo* diskinfo) {
 +  NOTIMPLEMENTED();
 +  return false;
 +}
 +
 +bool GetVmStatInfo(VmStatInfo* vmstat) {
 +  NOTIMPLEMENTED();
 +  return false;
 +}
 +
 +SystemDiskInfo::SystemDiskInfo() {
 +  reads = 0;
 +  reads_merged = 0;
 +  sectors_read = 0;
 +  read_time = 0;
 +  writes = 0;
 +  writes_merged = 0;
 +  sectors_written = 0;
 +  write_time = 0;
 +  io = 0;
 +  io_time = 0;
 +  weighted_io_time = 0;
 +}
 +
 +SystemDiskInfo::SystemDiskInfo(const SystemDiskInfo& other) = default;
 +
 +std::unique_ptr<Value> SystemDiskInfo::ToValue() const {
 +  auto res = std::make_unique<DictionaryValue>();
 +
 +  // Write out uint64_t variables as doubles.
 +  // Note: this may discard some precision, but for JS there's no other option.
 +  res->SetDouble("reads", static_cast<double>(reads));
 +  res->SetDouble("reads_merged", static_cast<double>(reads_merged));
 +  res->SetDouble("sectors_read", static_cast<double>(sectors_read));
 +  res->SetDouble("read_time", static_cast<double>(read_time));
 +  res->SetDouble("writes", static_cast<double>(writes));
 +  res->SetDouble("writes_merged", static_cast<double>(writes_merged));
 +  res->SetDouble("sectors_written", static_cast<double>(sectors_written));
 +  res->SetDouble("write_time", static_cast<double>(write_time));
 +  res->SetDouble("io", static_cast<double>(io));
 +  res->SetDouble("io_time", static_cast<double>(io_time));
 +  res->SetDouble("weighted_io_time", static_cast<double>(weighted_io_time));
 +
 +  return std::move(res);
 +}
 +
 +std::unique_ptr<DictionaryValue> SystemMemoryInfoKB::ToValue() const {
 +  auto res = std::make_unique<DictionaryValue>();
 +  res->SetIntKey("total", total);
 +  res->SetIntKey("free", free);
 +  res->SetIntKey("available", available);
 +  res->SetIntKey("buffers", buffers);
 +  res->SetIntKey("cached", cached);
 +  res->SetIntKey("active_anon", active_anon);
 +  res->SetIntKey("inactive_anon", inactive_anon);
 +  res->SetIntKey("active_file", active_file);
 +  res->SetIntKey("inactive_file", inactive_file);
 +  res->SetIntKey("swap_total", swap_total);
 +  res->SetIntKey("swap_free", swap_free);
 +  res->SetIntKey("swap_used", swap_total - swap_free);
 +  res->SetIntKey("dirty", dirty);
 +  res->SetIntKey("reclaimable", reclaimable);
 +
 +  return res;
 +}
 +
 +std::unique_ptr<DictionaryValue> VmStatInfo::ToValue() const {
 +  auto res = std::make_unique<DictionaryValue>();
 +  res->SetIntKey("pswpin", pswpin);
 +  res->SetIntKey("pswpout", pswpout);
 +  res->SetIntKey("pgmajfault", pgmajfault);
 +  return res;
 +}
  }  // namespace base
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_process__metrics__posix.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_process__metrics__posix.cc
index 4dd9ffe6de82..b604ca381991 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_process__metrics__posix.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_process__metrics__posix.cc
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/base/process/process_metrics_posix.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/base/process/process_metrics_posix.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/process/process_metrics_posix.cc
-@@ -19,6 +19,8 @@
+@@ -20,6 +20,8 @@
  
- #if defined(OS_MACOSX)
+ #if defined(OS_APPLE)
  #include <malloc/malloc.h>
 +#elif defined(OS_FREEBSD)
 +#include <stdlib.h>
  #else
  #include <malloc.h>
  #endif
-@@ -107,7 +109,7 @@ size_t ProcessMetrics::GetMallocUsage() {
+@@ -126,7 +128,7 @@ size_t ProcessMetrics::GetMallocUsage() {
  #else
    return minfo.hblkhd + minfo.arena;
  #endif
 -#elif defined(OS_FUCHSIA)
 +#elif defined(OS_FUCHSIA) || defined(OS_BSD)
    // TODO(fuchsia): Not currently exposed. https://crbug.com/735087.
    return 0;
  #endif
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_profiler_register__context.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_profiler_register__context.h
index e43368959186..0d5fc62fbeea 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_profiler_register__context.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_profiler_register__context.h
@@ -1,60 +1,60 @@
---- src/3rdparty/chromium/base/profiler/register_context.h.orig	2020-04-08 09:41:36 UTC
+--- src/3rdparty/chromium/base/profiler/register_context.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/profiler/register_context.h
 @@ -17,7 +17,7 @@
  #include <windows.h>
- #elif defined(OS_MACOSX)
+ #elif defined(OS_APPLE)
  #include <mach/machine/thread_status.h>
--#elif defined(OS_ANDROID) || defined(OS_LINUX)
-+#elif defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+-#elif defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include <sys/ucontext.h>
  #endif
  
-@@ -152,6 +152,48 @@ inline uintptr_t& RegisterContextInstructionPointer(mc
+@@ -190,6 +190,48 @@ inline uintptr_t& RegisterContextInstructionPointer(mc
  }
  
  #endif  // #if defined(ARCH_CPU_ARM_FAMILY) && defined(ARCH_CPU_32_BITS)
 +
 +#elif defined(OS_FREEBSD)
 +
 +using RegisterContext = mcontext_t;
 +
 +#if defined(ARCH_CPU_X86_64)
 +inline uintptr_t& RegisterContextStackPointer(mcontext_t* context) {
 +  return AsUintPtr(&context->mc_rsp);
 +}
 +
 +inline uintptr_t& RegisterContextFramePointer(mcontext_t* context) {
 +  return AsUintPtr(&context->mc_rbp);
 +}
 +
 +inline uintptr_t& RegisterContextInstructionPointer(mcontext_t* context) {
 +  return AsUintPtr(&context->mc_rip);
 +}
 +#elif defined(ARCH_CPU_X86)
 +inline uintptr_t& RegisterContextStackPointer(mcontext_t* context) {
 +  return AsUintPtr(&context->mc_esp);
 +}
 +
 +inline uintptr_t& RegisterContextFramePointer(mcontext_t* context) {
 +  return AsUintPtr(&context->mc_ebp);
 +}
 +
 +inline uintptr_t& RegisterContextInstructionPointer(mcontext_t* context) {
 +  return AsUintPtr(&context->mc_eip);
 +}
 +#elif defined(ARCH_CPU_ARM64)
 +inline uintptr_t& RegisterContextStackPointer(mcontext_t* context) {
 +  return AsUintPtr(&context->mc_gpregs.gp_sp);
 +}
 +
 +inline uintptr_t& RegisterContextFramePointer(mcontext_t* context) {
 +  return AsUintPtr(&context->mc_gpregs.gp_x[29]);
 +}
 +
 +inline uintptr_t& RegisterContextInstructionPointer(mcontext_t* context) {
 +  return AsUintPtr(&context->mc_gpregs.gp_elr);
 +}
 +#endif
  
  #else  // #if defined(OS_WIN)
  
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_profiler_sampling__profiler__thread__token.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_profiler_sampling__profiler__thread__token.cc
index 318762d4070a..14d811845a39 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_profiler_sampling__profiler__thread__token.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_profiler_sampling__profiler__thread__token.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/base/profiler/sampling_profiler_thread_token.cc.orig	2020-04-08 09:41:36 UTC
+--- src/3rdparty/chromium/base/profiler/sampling_profiler_thread_token.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/profiler/sampling_profiler_thread_token.cc
-@@ -7,7 +7,7 @@
+@@ -7,7 +7,7 @@ SamplingProfilerThreadToken GetSamplingProfilerCurrent
  namespace base {
  
  SamplingProfilerThreadToken GetSamplingProfilerCurrentThreadToken() {
--#if defined(OS_ANDROID) || defined(OS_LINUX)
-+#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    return {PlatformThread::CurrentId(), pthread_self()};
  #else
    return {PlatformThread::CurrentId()};
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_profiler_sampling__profiler__thread__token.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_profiler_sampling__profiler__thread__token.h
index 0954d059cff0..66bfa91d3dc5 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_profiler_sampling__profiler__thread__token.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_profiler_sampling__profiler__thread__token.h
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/base/profiler/sampling_profiler_thread_token.h.orig	2020-04-08 09:41:36 UTC
+--- src/3rdparty/chromium/base/profiler/sampling_profiler_thread_token.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/profiler/sampling_profiler_thread_token.h
 @@ -9,7 +9,7 @@
  #include "base/threading/platform_thread.h"
  #include "build/build_config.h"
  
--#if defined(OS_ANDROID) || defined(OS_LINUX)
-+#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include <pthread.h>
  #endif
  
-@@ -21,7 +21,7 @@ namespace base {
+@@ -21,7 +21,7 @@ struct SamplingProfilerThreadToken {
  // functions used to obtain the stack base address.
  struct SamplingProfilerThreadToken {
    PlatformThreadId id;
--#if defined(OS_ANDROID) || defined(OS_LINUX)
-+#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    pthread_t pthread_id;
  #endif
  };
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_profiler_stack__copier__signal.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_profiler_stack__copier__signal.cc
index 5983abf16e99..f42f24f26f85 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_profiler_stack__copier__signal.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_profiler_stack__copier__signal.cc
@@ -1,63 +1,63 @@
---- src/3rdparty/chromium/base/profiler/stack_copier_signal.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/base/profiler/stack_copier_signal.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/profiler/stack_copier_signal.cc
 @@ -4,7 +4,14 @@
  
  #include "base/profiler/stack_copier_signal.h"
  
 +#if defined(OS_LINUX)
  #include <linux/futex.h>
 +#include <syscall.h>
 +#elif defined(OS_FREEBSD)
 +#include <sys/types.h>
 +#include <sys/thr.h>
 +#include <sys/umtx.h>
 +#endif
  #include <signal.h>
  #include <sys/ucontext.h>
  #include <syscall.h>
-@@ -33,8 +40,13 @@ class AsyncSafeWaitableEvent {
+@@ -34,8 +41,13 @@ class AsyncSafeWaitableEvent {
      // for a pthread mutex. So, also check the condition.
      while (true) {
        int res =
 +#if defined(OS_LINUX)
            syscall(SYS_futex, futex_int_ptr(), FUTEX_WAIT | FUTEX_PRIVATE_FLAG,
                    0, nullptr, nullptr, 0);
 +#elif defined(OS_FREEBSD)
 +          _umtx_op(futex_int_ptr(), UMTX_OP_WAIT_UINT_PRIVATE, 0, nullptr,
 +                   nullptr);
 +#endif
        if (futex_.load(std::memory_order_acquire) != 0)
          return true;
        if (res != 0)
-@@ -44,8 +56,12 @@ class AsyncSafeWaitableEvent {
+@@ -45,8 +57,12 @@ class AsyncSafeWaitableEvent {
  
    void Signal() {
      futex_.store(1, std::memory_order_release);
 +#if defined(OS_LINUX)
      syscall(SYS_futex, futex_int_ptr(), FUTEX_WAKE | FUTEX_PRIVATE_FLAG, 1,
              nullptr, nullptr, 0);
 +#elif defined(OS_FREEBSD)
 +    _umtx_op(futex_int_ptr(), UMTX_OP_WAKE_PRIVATE, 1, nullptr, nullptr);
 +#endif
    }
  
   private:
-@@ -215,11 +231,18 @@ bool StackCopierSignal::CopyStack(StackBuffer* stack_b
+@@ -216,11 +232,18 @@ bool StackCopierSignal::CopyStack(StackBuffer* stack_b
      if (!scoped_sigaction.succeeded())
        return false;
  
 +#if defined(OS_LINUX)
      if (syscall(SYS_tgkill, getpid(), thread_delegate_->GetThreadId(),
                  SIGURG) != 0) {
        NOTREACHED();
        return false;
      }
 +#elif defined(OS_FREEBSD)
 +    if (thr_kill2(getpid(), thread_delegate_->GetThreadId(), SIGURG) != 0) {
 +      NOTREACHED();
 +      return false;
 +    }
 +#endif
      bool finished_waiting = wait_event.Wait();
      TRACE_EVENT_END0(TRACE_DISABLED_BY_DEFAULT("cpu_profiler.debug"),
                       "StackCopierSignal copy stack");
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_profiler_stack__sampling__profiler__unittest.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_profiler_stack__sampling__profiler__test__util.cc
similarity index 56%
rename from www/qt5-webengine/files/patch-src_3rdparty_chromium_base_profiler_stack__sampling__profiler__unittest.cc
rename to www/qt5-webengine/files/patch-src_3rdparty_chromium_base_profiler_stack__sampling__profiler__test__util.cc
index 8e8ff9841ab1..c2ee5d016d95 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_profiler_stack__sampling__profiler__unittest.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_profiler_stack__sampling__profiler__test__util.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/base/profiler/stack_sampling_profiler_unittest.cc.orig	2018-11-13 18:25:11 UTC
-+++ src/3rdparty/chromium/base/profiler/stack_sampling_profiler_unittest.cc
-@@ -39,7 +39,7 @@
- #include <intrin.h>
+--- src/3rdparty/chromium/base/profiler/stack_sampling_profiler_test_util.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/base/profiler/stack_sampling_profiler_test_util.cc
+@@ -32,7 +32,7 @@
+ // Fortunately, it provides _alloca, which functions identically.
  #include <malloc.h>
- #include <windows.h>
+ #define alloca _alloca
 -#else
 +#elif !defined(OS_BSD)
  #include <alloca.h>
  #endif
  
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_profiler_thread__delegate__posix.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_profiler_thread__delegate__posix.cc
index 580f980fc476..68cc5632eec3 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_profiler_thread__delegate__posix.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_profiler_thread__delegate__posix.cc
@@ -1,67 +1,67 @@
---- src/3rdparty/chromium/base/profiler/thread_delegate_posix.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/base/profiler/thread_delegate_posix.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/profiler/thread_delegate_posix.cc
-@@ -9,6 +9,9 @@
+@@ -12,6 +12,9 @@
+ #include "base/profiler/thread_delegate_posix.h"
  #include "base/stl_util.h"
- 
  #include "build/build_config.h"
 +#if defined(OS_FREEBSD)
 +#include <pthread_np.h>
 +#endif
  
- namespace base {
- 
-@@ -17,7 +20,12 @@ namespace {
+ #if defined(OS_ANDROID)
+ #include "base/files/file_util.h"
+@@ -43,7 +46,12 @@ uintptr_t GetThreadStackBaseAddressImpl(
  uintptr_t GetThreadStackBaseAddressImpl(
      SamplingProfilerThreadToken thread_token) {
    pthread_attr_t attr;
 +#if defined(OS_FREEBSD)
 +  pthread_attr_init(&attr);
 +  pthread_attr_get_np(thread_token.pthread_id, &attr);
 +#elif defined(OS_LINUX)
    pthread_getattr_np(thread_token.pthread_id, &attr);
 +#endif
    // See crbug.com/617730 for limitations of this approach on Linux.
    void* address;
    size_t size;
-@@ -93,16 +101,33 @@ std::vector<uintptr_t*> ThreadDelegatePosix::GetRegist
+@@ -130,16 +138,33 @@ std::vector<uintptr_t*> ThreadDelegatePosix::GetRegist
    return {
        // Return the set of callee-save registers per the i386 System V ABI
        // section 2.2.3, plus the stack pointer.
 +#if defined(OS_FREEBSD)
 +      reinterpret_cast<uintptr_t*>(&thread_context->mc_ebx),
 +      reinterpret_cast<uintptr_t*>(&thread_context->mc_ebp),
 +      reinterpret_cast<uintptr_t*>(&thread_context->mc_esi),
 +      reinterpret_cast<uintptr_t*>(&thread_context->mc_edi),
 +      reinterpret_cast<uintptr_t*>(&thread_context->mc_esp),
 +#else
        reinterpret_cast<uintptr_t*>(&thread_context->gregs[REG_EBX]),
        reinterpret_cast<uintptr_t*>(&thread_context->gregs[REG_EBP]),
        reinterpret_cast<uintptr_t*>(&thread_context->gregs[REG_ESI]),
        reinterpret_cast<uintptr_t*>(&thread_context->gregs[REG_EDI]),
        reinterpret_cast<uintptr_t*>(&thread_context->gregs[REG_ESP]),
 +#endif
    };
  #elif defined(ARCH_CPU_X86_FAMILY) && defined(ARCH_CPU_64_BITS)
    return {
        // Return the set of callee-save registers per the x86-64 System V ABI
        // section 3.2.1, plus the stack pointer.
 +#if defined(OS_FREEBSD)
 +      reinterpret_cast<uintptr_t*>(&thread_context->mc_rbp),
 +      reinterpret_cast<uintptr_t*>(&thread_context->mc_rbx),
 +      reinterpret_cast<uintptr_t*>(&thread_context->mc_r12),
 +      reinterpret_cast<uintptr_t*>(&thread_context->mc_r13),
 +      reinterpret_cast<uintptr_t*>(&thread_context->mc_r14),
 +      reinterpret_cast<uintptr_t*>(&thread_context->mc_r15),
 +      reinterpret_cast<uintptr_t*>(&thread_context->mc_rsp),
 +#else
        reinterpret_cast<uintptr_t*>(&thread_context->gregs[REG_RBP]),
        reinterpret_cast<uintptr_t*>(&thread_context->gregs[REG_RBX]),
        reinterpret_cast<uintptr_t*>(&thread_context->gregs[REG_R12]),
-@@ -110,6 +135,7 @@ std::vector<uintptr_t*> ThreadDelegatePosix::GetRegist
+@@ -147,6 +172,7 @@ std::vector<uintptr_t*> ThreadDelegatePosix::GetRegist
        reinterpret_cast<uintptr_t*>(&thread_context->gregs[REG_R14]),
        reinterpret_cast<uintptr_t*>(&thread_context->gregs[REG_R15]),
        reinterpret_cast<uintptr_t*>(&thread_context->gregs[REG_RSP]),
 +#endif
    };
  #else  // #if defined(ARCH_CPU_ARM_FAMILY) && defined(ARCH_CPU_32_BITS)
    // Unimplemented for other architectures.
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_sampling__heap__profiler_sampling__heap__profiler.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_sampling__heap__profiler_sampling__heap__profiler.cc
index 3cd3787ceddf..8c489bc2956f 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_sampling__heap__profiler_sampling__heap__profiler.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_sampling__heap__profiler_sampling__heap__profiler.cc
@@ -1,24 +1,24 @@
---- src/3rdparty/chromium/base/sampling_heap_profiler/sampling_heap_profiler.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/base/sampling_heap_profiler/sampling_heap_profiler.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/sampling_heap_profiler/sampling_heap_profiler.cc
-@@ -29,6 +29,10 @@
+@@ -30,6 +30,10 @@
  #include <sys/prctl.h>
  #endif
  
 +#if defined(OS_BSD)
 +#include <pthread_np.h>
 +#endif
 +
  #if defined(OS_ANDROID) && BUILDFLAG(CAN_UNWIND_WITH_CFI_TABLE) && \
      defined(OFFICIAL_BUILD)
- #include "base/trace_event/cfi_backtrace_android.h"
-@@ -64,6 +68,10 @@ const char* GetAndLeakThreadName() {
- #elif defined(OS_MACOSX)
+ #include "base/trace_event/cfi_backtrace_android.h"  // no-presubmit-check
+@@ -65,6 +69,10 @@ const char* GetAndLeakThreadName() {
+ #elif defined(OS_APPLE)
    int err = pthread_getname_np(pthread_self(), name, kBufferLen);
    if (err == 0 && *name != '\0')
 +    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_ANDROID)
+ #endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
  
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_security__unittest.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_security__unittest.cc
deleted file mode 100644
index 7dbb4163a24b..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_security__unittest.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/3rdparty/chromium/base/security_unittest.cc.orig	2020-04-08 09:41:36 UTC
-+++ src/3rdparty/chromium/base/security_unittest.cc
-@@ -60,7 +60,7 @@ NOINLINE Type HideValueFromCompiler(volatile Type valu
- // FAILS_ is too clunky.
- void OverflowTestsSoftExpectTrue(bool overflow_detected) {
-   if (!overflow_detected) {
--#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_MACOSX)
-+#if defined(OS_POSIX) && !defined(OS_NACL)
-     // Sadly, on Linux, Android, and OSX we don't have a good story yet. Don't
-     // fail the test, but report.
-     printf("Platform has overflow: %s\n",
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_synchronization_lock__impl.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_synchronization_lock__impl.h
index 438382b2c2b2..aab2088aab83 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_synchronization_lock__impl.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_synchronization_lock__impl.h
@@ -1,16 +1,19 @@
---- src/3rdparty/chromium/base/synchronization/lock_impl.h.orig	2020-04-08 09:41:36 UTC
+--- src/3rdparty/chromium/base/synchronization/lock_impl.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/synchronization/lock_impl.h
-@@ -67,10 +67,13 @@ void LockImpl::Unlock() {
-   ::ReleaseSRWLockExclusive(reinterpret_cast<PSRWLOCK>(&native_handle_));
+@@ -105,6 +105,8 @@ void LockImpl::Unlock() {
  }
+ 
  #elif defined(OS_POSIX) || defined(OS_FUCHSIA)
 +#pragma GCC diagnostic push
 +#pragma GCC diagnostic ignored "-Wthread-safety-analysis"
- void LockImpl::Unlock() {
+ 
+ bool LockImpl::Try() {
+   int rv = pthread_mutex_trylock(&native_handle_);
+@@ -116,6 +118,7 @@ void LockImpl::Unlock() {
    int rv = pthread_mutex_unlock(&native_handle_);
    DCHECK_EQ(rv, 0) << ". " << strerror(rv);
  }
 +#pragma GCC diagnostic pop
  #endif
  
  // This is an implementation used for AutoLock templated on the lock type.
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_syslog__logging.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_syslog__logging.cc
index 3d6b2fa82ae4..f6437000aff0 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_syslog__logging.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_syslog__logging.cc
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/base/syslog_logging.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/base/syslog_logging.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/syslog_logging.cc
-@@ -11,7 +11,7 @@
- #include "base/callback_helpers.h"
- #include "base/debug/stack_trace.h"
+@@ -13,7 +13,7 @@
+ #include "base/strings/string_util.h"
+ #include "base/win/scoped_handle.h"
  #include "base/win/win_util.h"
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  // <syslog.h> defines LOG_INFO, LOG_WARNING macros that could conflict with
  // base::LOG_INFO, base::LOG_WARNING.
  #include <syslog.h>
-@@ -110,7 +110,7 @@ EventLogMessage::~EventLogMessage() {
+@@ -134,7 +134,7 @@ EventLogMessage::~EventLogMessage() {
  
    if (user_sid != nullptr)
      ::LocalFree(user_sid);
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    const char kEventSource[] = "chrome";
    openlog(kEventSource, LOG_NOWAIT | LOG_PID, LOG_USER);
    // We can't use the defined names for the logging severity from syslog.h
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_system_sys__info.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_system_sys__info.cc
index 7820f051cc60..3a82bd0472e8 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_system_sys__info.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_system_sys__info.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/base/system/sys_info.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/base/system/sys_info.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/system/sys_info.cc
-@@ -102,7 +102,7 @@ void SysInfo::GetHardwareInfo(base::OnceCallback<void(
- #elif defined(OS_ANDROID) || defined(OS_MACOSX)
+@@ -104,7 +104,7 @@ void SysInfo::GetHardwareInfo(base::OnceCallback<void(
+ #elif defined(OS_ANDROID) || defined(OS_APPLE)
    base::ThreadPool::PostTaskAndReplyWithResult(
        FROM_HERE, {}, base::BindOnce(&GetHardwareInfoSync), std::move(callback));
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    base::ThreadPool::PostTaskAndReplyWithResult(
        FROM_HERE, {base::MayBlock()}, base::BindOnce(&GetHardwareInfoSync),
        std::move(callback));
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_system_sys__info.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_system_sys__info.h
index 40ecbccdbdef..05d05e66be43 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_system_sys__info.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_system_sys__info.h
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/base/system/sys_info.h.orig	2020-03-16 14:04:24 UTC
+--- src/3rdparty/chromium/base/system/sys_info.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/system/sys_info.h
-@@ -188,6 +188,8 @@ class BASE_EXPORT SysInfo {
-   // See also SysUtils.java, method isLowEndDevice.
+@@ -202,6 +202,8 @@ class BASE_EXPORT SysInfo {
+   // On Desktop this returns true when memory <= 512MB.
    static bool IsLowEndDevice();
  
 +  static uint64_t MaxSharedMemorySize();
 +
   private:
    FRIEND_TEST_ALL_PREFIXES(SysInfoTest, AmountOfAvailablePhysicalMemory);
    FRIEND_TEST_ALL_PREFIXES(debug::SystemMetricsTest, ParseMeminfo);
-@@ -197,7 +199,7 @@ class BASE_EXPORT SysInfo {
+@@ -211,7 +213,7 @@ class BASE_EXPORT SysInfo {
    static bool IsLowEndDeviceImpl();
    static HardwareInfo GetHardwareInfoSync();
  
--#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX)
-+#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) || 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_AIX)
    static int64_t AmountOfAvailablePhysicalMemory(
        const SystemMemoryInfoKB& meminfo);
- #endif
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_system_sys__info__freebsd.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_system_sys__info__freebsd.cc
index 63886249c7be..5dcf21832a71 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_system_sys__info__freebsd.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_system_sys__info__freebsd.cc
@@ -1,83 +1,102 @@
---- src/3rdparty/chromium/base/system/sys_info_freebsd.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/base/system/sys_info_freebsd.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/system/sys_info_freebsd.cc
-@@ -9,30 +9,76 @@
+@@ -9,30 +9,95 @@
  #include <sys/sysctl.h>
  
- #include "base/logging.h"
+ #include "base/notreached.h"
++#include "base/process/process_metrics.h"
 +#include "base/strings/string_util.h"
  
  namespace base {
  
  int64_t SysInfo::AmountOfPhysicalMemoryImpl() {
 -  int pages, page_size;
 +  int pages, page_size, r = 0;
    size_t size = sizeof(pages);
 -  sysctlbyname("vm.stats.vm.v_page_count", &pages, &size, NULL, 0);
 -  sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0);
 -  if (pages == -1 || page_size == -1) {
-+  if(r == 0)
++
++  if (r == 0)
 +    r = sysctlbyname("vm.stats.vm.v_page_count", &pages, &size, NULL, 0);
-+  if(r == 0)
-+    r =sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0);
-+  if(r == -1) {
++  if (r == 0)
++    r = sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0);
++
++  if (r == -1) {
      NOTREACHED();
      return 0;
    }
++
    return static_cast<int64_t>(pages) * page_size;
  }
  
 +int64_t SysInfo::AmountOfAvailablePhysicalMemoryImpl() {
 +  int page_size, r = 0;
-+  unsigned pgfree, pginact, pgcache;
++  unsigned int pgfree, pginact, pgcache;
 +  size_t size = sizeof(page_size);
 +  size_t szpg = sizeof(pgfree);
-+  if(r == 0)
++
++  if (r == 0)
 +    r = sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0);
-+  if(r == 0)
++  if (r == 0)
 +    r = sysctlbyname("vm.stats.vm.v_free_count", &pgfree, &szpg, NULL, 0);
-+  if(r == 0)
++  if (r == 0)
 +    r = sysctlbyname("vm.stats.vm.v_inactive_count", &pginact, &szpg, NULL, 0);
-+  if(r == 0)
++  if (r == 0)
 +    r = sysctlbyname("vm.stats.vm.v_cache_count", &pgcache, &szpg, NULL, 0);
-+  if(r == -1) {
++
++  if (r == -1) {
 +    NOTREACHED();
 +    return 0;
 +  }
++
 +  return static_cast<int64_t>((pgfree + pginact + pgcache) * page_size);
 +}
 +
  // static
++int64_t SysInfo::AmountOfAvailablePhysicalMemory(const SystemMemoryInfoKB& info) {
++  int64_t res_kb = info.available != 0
++                       ? info.available - info.active_file
++                       : info.free + info.reclaimable + info.inactive_file;
++  return res_kb * 1024;
++}
++
++// static
 +std::string SysInfo::CPUModelName() {
 +  int mib[] = { CTL_HW, HW_MODEL };
 +  char name[256];
 +  size_t size = base::size(name);
-+  if (sysctl(mib, base::size(mib), &name, &size, NULL, 0) == 0)
++
++  if (sysctl(mib, base::size(mib), &name, &size, NULL, 0) == 0) {
 +    return name;
++  }
++
 +  return std::string();
 +}
 +
 +// static
  uint64_t SysInfo::MaxSharedMemorySize() {
    size_t limit;
    size_t size = sizeof(limit);
 +
    if (sysctlbyname("kern.ipc.shmmax", &limit, &size, NULL, 0) < 0) {
      NOTREACHED();
      return 0;
    }
 +
    return static_cast<uint64_t>(limit);
 +}
 +
 +SysInfo::HardwareInfo SysInfo::GetHardwareInfoSync() {
 +  HardwareInfo info;
-+  // Set the manufacturer to "FreeBSD" and the model to
-+  // an empty string.
++
 +  info.manufacturer = "FreeBSD";
 +  info.model = HardwareModelName();
++
 +  DCHECK(IsStringUTF8(info.manufacturer));
 +  DCHECK(IsStringUTF8(info.model));
++
 +  return info;
  }
  
  }  // namespace base
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_system_sys__info__posix.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_system_sys__info__posix.cc
index c696bede9c3e..45da8acd4454 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_system_sys__info__posix.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_system_sys__info__posix.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/base/system/sys_info_posix.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/base/system/sys_info_posix.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/system/sys_info_posix.cc
-@@ -220,6 +220,8 @@ std::string SysInfo::OperatingSystemArchitecture() {
+@@ -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/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_test_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_test_BUILD.gn
new file mode 100644
index 000000000000..3ca8a275c195
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_test_BUILD.gn
@@ -0,0 +1,15 @@
+--- src/3rdparty/chromium/base/test/BUILD.gn.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/base/test/BUILD.gn
+@@ -415,7 +415,11 @@ if (is_linux || is_chromeos) {
+ 
+   copy("fonts_conf") {
+     sources = [ "fonts.conf" ]
+-    outputs = [ "${root_build_dir}/etc/fonts/{{source_file_part}}" ]
++    if (is_bsd) {
++      outputs = [ "${root_build_dir}/%%LOCALBASE%%/etc/fonts/{{source_file_part}}" ]
++    } else {
++      outputs = [ "${root_build_dir}/etc/fonts/{{source_file_part}}" ]
++    }
+   }
+ 
+   if (current_toolchain == host_toolchain) {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_test_test__file__util__posix.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_test_test__file__util__posix.cc
new file mode 100644
index 000000000000..34bc924058e5
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_test_test__file__util__posix.cc
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/base/test/test_file_util_posix.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/base/test/test_file_util_posix.cc
+@@ -87,7 +87,7 @@ void SyncPageCacheToDisk() {
+   sync();
+ }
+ 
+-#if !defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_APPLE) && \
++#if !defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_APPLE) && !defined(OS_BSD) && \
+     !defined(OS_ANDROID)
+ bool EvictFileFromSystemCache(const FilePath& file) {
+   // There doesn't seem to be a POSIX way to cool the disk cache.
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_test_test__suite.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_test_test__suite.cc
new file mode 100644
index 000000000000..db6b07de0e08
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_test_test__suite.cc
@@ -0,0 +1,37 @@
+--- src/3rdparty/chromium/base/test/test_suite.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/base/test/test_suite.cc
+@@ -66,7 +66,7 @@
+ #include "base/test/test_support_android.h"
+ #endif
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "base/test/fontconfig_util_linux.h"
+ #endif
+ 
+@@ -382,14 +382,14 @@ void TestSuite::PreInitialize() {
+   testing::GTEST_FLAG(catch_exceptions) = false;
+ #endif
+   EnableTerminationOnHeapCorruption();
+-#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(USE_AURA)
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && defined(USE_AURA)
+   // When calling native char conversion functions (e.g wrctomb) we need to
+   // have the locale set. In the absence of such a call the "C" locale is the
+   // default. In the gtk code (below) gtk_init() implicitly sets a locale.
+   setlocale(LC_ALL, "");
+   // We still need number to string conversions to be locale insensitive.
+   setlocale(LC_NUMERIC, "C");
+-#endif  // (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(USE_AURA)
++#endif  // (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && defined(USE_AURA)
+ 
+   // On Android, AtExitManager is created in
+   // testing/android/native_test_wrapper.cc before main() is called.
+@@ -650,7 +650,7 @@ void TestSuite::Initialize() {
+   // TODO(jshin): Should we set the locale via an OS X locale API here?
+   i18n::SetICUDefaultLocale("en_US");
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   SetUpFontconfig();
+ #endif
+ 
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_third__party_libevent_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_third__party_libevent_BUILD.gn
index 895938da5c21..92d87ab1a79c 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_third__party_libevent_BUILD.gn
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_third__party_libevent_BUILD.gn
@@ -1,24 +1,24 @@
---- src/3rdparty/chromium/base/third_party/libevent/BUILD.gn.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/base/third_party/libevent/BUILD.gn.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/third_party/libevent/BUILD.gn
 @@ -48,13 +48,20 @@ static_library("bundled_libevent") {
        "mac/event-config.h",
      ]
      include_dirs = [ "mac" ]
--  } else if (is_linux) {
-+  } else if (is_linux && !is_bsd) {
+-  } else if (is_linux || is_chromeos) {
++  } else if ((is_linux || is_chromeos) && !is_bsd) {
      sources += [
        "epoll.c",
        "linux/config.h",
        "linux/event-config.h",
      ]
      include_dirs = [ "linux" ]
 +  } else if (is_bsd) {
-+    sources += [ 
++    sources += [
 +      "kqueue.c",
 +      "freebsd/config.h",
 +      "freebsd/event-config.h",
 +    ]
 +    include_dirs = [ "freebsd" ]
    } else if (is_android) {
      sources += [
        "android/config.h",
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_threading_platform__thread.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_threading_platform__thread.h
index 455a56311c14..7feb415bc0a5 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_threading_platform__thread.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_threading_platform__thread.h
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/base/threading/platform_thread.h.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/base/threading/platform_thread.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/threading/platform_thread.h
-@@ -217,7 +217,7 @@ class BASE_EXPORT PlatformThread {
+@@ -230,7 +230,7 @@ class BASE_EXPORT PlatformThread {
+   // Returns a realtime period provided by |delegate|.
+   static TimeDelta GetRealtimePeriod(Delegate* delegate);
  
-   static ThreadPriority GetCurrentThreadPriority();
- 
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    // Toggles a specific thread's priority at runtime. This can be used to
    // change the priority of a thread in a different process and will fail
    // if the calling process does not have proper permissions. The
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_threading_platform__thread__internal__posix.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_threading_platform__thread__internal__posix.h
new file mode 100644
index 000000000000..6bedc19c611e
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_threading_platform__thread__internal__posix.h
@@ -0,0 +1,18 @@
+--- src/3rdparty/chromium/base/threading/platform_thread_internal_posix.h.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/base/threading/platform_thread_internal_posix.h
+@@ -47,13 +47,13 @@ Optional<ThreadPriority> GetCurrentThreadPriorityForPl
+ // of CanIncreaseThreadPriority().
+ Optional<ThreadPriority> GetCurrentThreadPriorityForPlatform();
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Current thread id is cached in thread local storage for performance reasons.
+ // In some rare cases it's important to clear that cache explicitly (e.g. after
+ // going through clone() syscall which does not call pthread_atfork()
+ // handlers).
+ BASE_EXPORT void ClearTidCache();
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ 
+ }  // namespace internal
+ 
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_threading_platform__thread__linux.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_threading_platform__thread__linux.cc
index 2743e9c6b4e2..67331095574d 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_threading_platform__thread__linux.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_threading_platform__thread__linux.cc
@@ -1,30 +1,30 @@
---- src/3rdparty/chromium/base/threading/platform_thread_linux.cc.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/base/threading/platform_thread_linux.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/threading/platform_thread_linux.cc
-@@ -18,7 +18,9 @@
+@@ -24,7 +24,9 @@
  
  #if !defined(OS_NACL) && !defined(OS_AIX)
  #include <pthread.h>
 +#if !defined(OS_BSD)
  #include <sys/prctl.h>
 +#endif
  #include <sys/resource.h>
  #include <sys/time.h>
  #include <sys/types.h>
-@@ -99,7 +101,7 @@ const ThreadPriorityToNiceValuePair kThreadPriorityToN
+@@ -264,7 +266,7 @@ Optional<bool> CanIncreaseCurrentThreadPriorityForPlat
  
  Optional<bool> CanIncreaseCurrentThreadPriorityForPlatform(
      ThreadPriority priority) {
 -#if !defined(OS_NACL)
 +#if !defined(OS_NACL) && !defined(OS_BSD)
    // A non-zero soft-limit on RLIMIT_RTPRIO is required to be allowed to invoke
    // pthread_setschedparam in SetCurrentThreadPriorityForPlatform().
    struct rlimit rlim;
-@@ -141,7 +143,7 @@ Optional<ThreadPriority> GetCurrentThreadPriorityForPl
+@@ -314,7 +316,7 @@ void PlatformThread::SetName(const std::string& name) 
  void PlatformThread::SetName(const std::string& name) {
    ThreadIdNameManager::GetInstance()->SetName(name);
  
 -#if !defined(OS_NACL) && !defined(OS_AIX)
 +#if !defined(OS_NACL) && !defined(OS_AIX) && !defined(OS_BSD)
    // On linux we can get the thread names to show up in the debugger by setting
    // the process name for the LWP.  We don't want to do this for the main
    // thread because that would rename the process, causing tools like killall
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_threading_platform__thread__posix.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_threading_platform__thread__posix.cc
index b093025e77df..c9f5903772ae 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_threading_platform__thread__posix.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_threading_platform__thread__posix.cc
@@ -1,11 +1,54 @@
---- src/3rdparty/chromium/base/threading/platform_thread_posix.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/base/threading/platform_thread_posix.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/threading/platform_thread_posix.cc
-@@ -61,7 +61,7 @@ void* ThreadFunc(void* params) {
-     if (!thread_params->joinable)
-       base::ThreadRestrictions::SetSingletonAllowed(false);
- 
--#if !defined(OS_NACL)
-+#if !defined(OS_NACL) && !defined(OS_BSD)
-     // Threads on linux/android may inherit their priority from the thread
-     // where they were created. This explicitly sets the priority of all new
-     // threads.
+@@ -32,6 +32,10 @@
+ #include <sys/syscall.h>
+ #endif
+ 
++#if defined(OS_BSD)
++#include <pthread_np.h>
++#endif
++
+ #if defined(OS_FUCHSIA)
+ #include <zircon/process.h>
+ #else
+@@ -141,7 +145,7 @@ bool CreateThread(size_t stack_size,
+   return success;
+ }
+ 
+-#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
+ // 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)
+ 
+ }  // namespace
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ 
+ namespace internal {
+ 
+@@ -173,7 +177,7 @@ void ClearTidCache() {
+ 
+ }  // namespace internal
+ 
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ 
+ // static
+ PlatformThreadId PlatformThread::CurrentId() {
+@@ -181,6 +185,8 @@ PlatformThreadId PlatformThread::CurrentId() {
+   // into the kernel.
+ #if defined(OS_APPLE)
+   return pthread_mach_thread_np(pthread_self());
++#elif defined(OS_BSD)
++  return pthread_getthreadid_np();
+ #elif defined(OS_LINUX) || defined(OS_CHROMEOS)
+   static NoDestructor<InitAtFork> init_at_fork;
+   if (g_thread_id == -1) {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_threading_thread__task__runner__handle.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_threading_thread__task__runner__handle.cc
index d5e9ab5b8a7e..dc784f037c4f 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_threading_thread__task__runner__handle.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_threading_thread__task__runner__handle.cc
@@ -1,26 +1,26 @@
---- src/3rdparty/chromium/base/threading/thread_task_runner_handle.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/base/threading/thread_task_runner_handle.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/threading/thread_task_runner_handle.cc
-@@ -7,6 +7,7 @@
+@@ -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/logging.h"
- #include "base/memory/ptr_util.h"
-@@ -37,6 +38,7 @@ bool ThreadTaskRunnerHandle::IsSet() {
+ #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) {
-@@ -86,6 +88,7 @@ ScopedClosureRunner ThreadTaskRunnerHandle::OverrideFo
+@@ -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/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_trace__event_malloc__dump__provider.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_trace__event_malloc__dump__provider.cc
index 96f1a2b2e151..37a21d2928cd 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_trace__event_malloc__dump__provider.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_trace__event_malloc__dump__provider.cc
@@ -1,21 +1,21 @@
---- src/3rdparty/chromium/base/trace_event/malloc_dump_provider.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/base/trace_event/malloc_dump_provider.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/trace_event/malloc_dump_provider.cc
 @@ -17,6 +17,8 @@
  
- #if defined(OS_MACOSX)
+ #if defined(OS_APPLE)
  #include <malloc/malloc.h>
 +#elif defined(OS_BSD)
 +#include <stdlib.h>
  #else
  #include <malloc.h>
  #endif
 @@ -132,6 +134,9 @@ bool MallocDumpProvider::OnMemoryDump(const MemoryDump
    }
  #elif defined(OS_FUCHSIA)
  // TODO(fuchsia): Port, see https://crbug.com/706592.
 +#elif defined(OS_BSD)
 +  total_virtual_size = 0;
 +  allocated_objects_size = 0;
  #else
    struct mallinfo info = mallinfo();
    // In case of Android's jemalloc |arena| is 0 and the outer pages size is
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_trace__event_process__memory__dump.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_trace__event_process__memory__dump.cc
index 1f4bf87ac594..b68c42c821de 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_trace__event_process__memory__dump.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_trace__event_process__memory__dump.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/base/trace_event/process_memory_dump.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/base/trace_event/process_memory_dump.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/base/trace_event/process_memory_dump.cc
-@@ -93,7 +93,7 @@ size_t ProcessMemoryDump::CountResidentBytes(void* sta
+@@ -95,7 +95,7 @@ size_t ProcessMemoryDump::CountResidentBytes(void* sta
  #if defined(OS_WIN)
    std::unique_ptr<PSAPI_WORKING_SET_EX_INFORMATION[]> vec(
        new PSAPI_WORKING_SET_EX_INFORMATION[max_vec_size]);
--#elif defined(OS_MACOSX)
-+#elif defined(OS_MACOSX) || defined(OS_BSD)
+-#elif defined(OS_APPLE)
++#elif defined(OS_APPLE) || defined(OS_BSD)
    std::unique_ptr<char[]> vec(new char[max_vec_size]);
  #elif defined(OS_POSIX) || defined(OS_FUCHSIA)
    std::unique_ptr<unsigned char[]> vec(new unsigned char[max_vec_size]);
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_util_memory__pressure_system__memory__pressure__evaluator.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_util_memory__pressure_system__memory__pressure__evaluator.cc
new file mode 100644
index 000000000000..92ff93c2159d
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_util_memory__pressure_system__memory__pressure__evaluator.cc
@@ -0,0 +1,20 @@
+--- src/3rdparty/chromium/base/util/memory_pressure/system_memory_pressure_evaluator.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/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/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_config_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_config_BUILD.gn
index 0d7a73775ff4..29df750432e0 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_config_BUILD.gn
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_config_BUILD.gn
@@ -1,30 +1,30 @@
---- src/3rdparty/chromium/build/config/BUILD.gn.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/build/config/BUILD.gn.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/build/config/BUILD.gn
-@@ -166,7 +166,7 @@ config("debug") {
+@@ -137,7 +137,7 @@ config("debug") {
        # builds, and we have to tell it to turn it off.
        defines += [ "_HAS_ITERATOR_DEBUGGING=0" ]
      }
--  } else if (is_linux && current_cpu == "x64" && enable_iterator_debugging) {
-+  } else if ((is_linux || is_bsd) && current_cpu == "x64" && enable_iterator_debugging) {
+-  } 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?
-@@ -267,9 +267,7 @@ config("default_libs") {
+@@ -235,9 +235,7 @@ config("default_libs") {
      ]
-   } else if (is_linux) {
+   } else if (is_linux || is_chromeos) {
      libs = [
 -      "dl",
        "pthread",
 -      "rt",
      ]
    }
  }
-@@ -346,7 +344,7 @@ config("executable_config") {
+@@ -320,7 +318,7 @@ config("executable_config") {
        "//build/config/ios:ios_dynamic_flags",
        "//build/config/ios:ios_executable_flags",
      ]
--  } else if (is_linux || is_android || current_os == "aix") {
-+  } else if (is_linux || is_bsd || is_android || current_os == "aix") {
+-  } 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/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_config_BUILDCONFIG.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_config_BUILDCONFIG.gn
index 8176349b40f8..f8211707ed0a 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_config_BUILDCONFIG.gn
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_config_BUILDCONFIG.gn
@@ -1,48 +1,48 @@
---- src/3rdparty/chromium/build/config/BUILDCONFIG.gn.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/build/config/BUILDCONFIG.gn.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/build/config/BUILDCONFIG.gn
 @@ -131,10 +131,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")
 @@ -191,8 +191,8 @@ if (host_toolchain == "") {
    # TODO(dpranke): Add some sort of assert here that verifies that
    # no toolchain omitted host_toolchain from its toolchain_args().
  
 -  if (host_os == "linux") {
 -    if (target_os != "linux") {
 +  if (host_os == "linux" || host_os == "freebsd") {
 +    if (target_os != "linux" && target_os != "freebsd") {
        host_toolchain = "//build/toolchain/linux:clang_$host_cpu"
      } else if (is_clang) {
        host_toolchain = "//build/toolchain/linux:clang_$host_cpu"
 @@ -229,7 +229,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"
 -} else if (target_os == "chromeos" || target_os == "linux") {
 +} else if (target_os == "chromeos" || target_os == "linux" || target_os == "freebsd") {
    # See comments in build/toolchain/cros/BUILD.gn about board compiles.
    if (is_clang) {
      _default_toolchain = "//build/toolchain/linux:clang_$target_cpu"
-@@ -296,10 +296,11 @@ is_android = current_os == "android"
+@@ -290,10 +290,11 @@ is_android = current_os == "android"
+ # current_os value directly.
+ 
+ is_android = current_os == "android"
++is_bsd = current_os == "freebsd"
  is_chromeos = current_os == "chromeos"
  is_fuchsia = current_os == "fuchsia"
  is_ios = current_os == "ios"
--is_linux = current_os == "chromeos" || current_os == "linux"
-+is_linux = current_os == "chromeos" || current_os == "linux" || current_os == "freebsd"
+-is_linux = current_os == "linux"
++is_linux = current_os == "linux" || current_os == "freebsd"
  is_mac = current_os == "mac"
  is_nacl = current_os == "nacl"
  is_win = current_os == "win" || current_os == "winuwp"
-+is_bsd = current_os == "freebsd"
- 
- is_posix = !is_win && !is_fuchsia
- 
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_config_compiler_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_config_compiler_BUILD.gn
index 3abed52065a4..cecfb1c215e1 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_config_compiler_BUILD.gn
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_config_compiler_BUILD.gn
@@ -1,92 +1,92 @@
---- src/3rdparty/chromium/build/config/compiler/BUILD.gn.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/build/config/compiler/BUILD.gn.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/build/config/compiler/BUILD.gn
-@@ -144,7 +144,7 @@ declare_args() {
-   # 'is_android' breaks content_shell_test_apk on android-kitkat-arm-rel.
-   # 'use_xcode_clang' may call old clang.
-   init_stack_vars =
--      !is_android && !use_xcode_clang && (!is_official_build || is_linux)
-+      !is_android && !use_xcode_clang && (!is_official_build || is_linux) && !is_bsd
+@@ -134,7 +134,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.
+-  init_stack_vars = !is_android && !use_xcode_clang
++  init_stack_vars = !is_android && !use_xcode_clang && !is_bsd
  
    # This argument is to control whether enabling text section splitting in the
    # final binary. When enabled, the separated text sections with prefix
-@@ -313,7 +313,7 @@ config("compiler") {
+@@ -297,7 +297,7 @@ config("compiler") {
      }
  
      # Linker warnings.
--    if (fatal_linker_warnings && !is_mac && !is_ios && current_os != "aix") {
-+    if (fatal_linker_warnings && !is_mac && !is_ios && !is_bsd && current_os != "aix") {
+-    if (fatal_linker_warnings && !is_apple && current_os != "aix") {
++    if (fatal_linker_warnings && !is_apple && !is_bsd && current_os != "aix") {
        ldflags += [ "-Wl,--fatal-warnings" ]
      }
-     if (fatal_linker_warnings && (is_mac || is_ios)) {
-@@ -419,7 +419,7 @@ config("compiler") {
+     if (fatal_linker_warnings && is_apple &&
+@@ -407,7 +407,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.
 -    if (!using_sanitizer) {
 +    if (!using_sanitizer && !is_bsd) {
        ldflags += [
          "-Wl,-z,defs",
          "-Wl,--as-needed",
-@@ -518,7 +518,7 @@ config("compiler") {
-     ldflags += [ "-Wl,-z,keep-text-section-prefix" ]
-   }
- 
--  if (is_clang && !is_nacl && !use_xcode_clang && !use_qt) {
-+  if (is_clang && !is_nacl && !use_xcode_clang && !use_qt && !is_bsd) {
-     cflags += [ "-fcrash-diagnostics-dir=" +
-                 rebase_path("//tools/clang/crashreports", root_build_dir) ]
- 
-@@ -789,7 +789,7 @@ config("compiler_cpu_abi") {
+@@ -795,7 +795,7 @@ config("compiler_cpu_abi") {
          cflags += [ "-mtune=$arm_tune" ]
        }
      } else if (current_cpu == "arm64") {
 -      if (is_clang && !is_android && !is_nacl && !is_fuchsia) {
 +      if (is_clang && !is_android && !is_nacl && !is_fuchsia && !is_bsd) {
          cflags += [ "--target=aarch64-linux-gnu" ]
          ldflags += [ "--target=aarch64-linux-gnu" ]
        }
-@@ -1139,7 +1139,7 @@ config("compiler_deterministic") {
+@@ -1148,7 +1148,7 @@ config("compiler_deterministic") {
        "-Xclang",
        ".",
      ]
 -    if (!is_win) {
 +    if (!is_win && !is_bsd) {
        # We don't use clang -cc1as on Windows (yet? https://crbug.com/762167)
        asmflags = [ "-Wa,-fdebug-compilation-dir,." ]
      }
-@@ -1541,7 +1541,7 @@ config("default_warnings") {
+@@ -1550,7 +1550,7 @@ config("default_warnings") {
          cflags += [ "-Wno-nonportable-include-path" ]
        }
  
 -      if (current_toolchain == host_toolchain || !use_xcode_clang) {
 +      if ((current_toolchain == host_toolchain || !use_xcode_clang) && !is_bsd) {
          # Flags NaCl (Clang 3.7) and Xcode 9.2 (Clang clang-900.0.39.2) do not
          # recognize.
          cflags += [
-@@ -1791,7 +1791,7 @@ config("thin_archive") {
+@@ -1724,7 +1724,7 @@ config("no_chromium_code") {
+       # suppressing them individually, we just blanket suppress them here.
+       "-Wno-unused-variable",
+     ]
+-    if (!is_nacl && (current_toolchain == host_toolchain || !use_xcode_clang)) {
++    if (!is_nacl && (current_toolchain == host_toolchain || !use_xcode_clang) && !is_bsd) {
+       cflags += [
+         # TODO(https://crbug.com/1031169): Clean up and enable.
+         "-Wno-misleading-indentation",
+@@ -1802,7 +1802,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_mac && !is_ios) || is_fuchsia) {
-+  if ((is_posix && !is_nacl && !is_mac && !is_ios && !is_bsd) || is_fuchsia) {
+-  if ((is_posix && !is_nacl && !is_apple) || is_fuchsia) {
++  if ((is_posix && !is_nacl && !is_apple && !is_bsd) || is_fuchsia) {
      arflags = [ "-T" ]
    } else if (is_win && use_lld) {
      arflags = [ "/llvmlibthin" ]
-@@ -2323,7 +2323,7 @@ config("symbols") {
+@@ -2343,7 +2343,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) {
 -      cflags += [ "-g2" ]
 +      cflags += [ "-g0" ]
      }
  
-     if (is_clang && !is_nacl && !use_xcode_clang && !use_qt) {
-@@ -2351,7 +2351,7 @@ config("symbols") {
+     # TODO(https://crbug.com/1050118): Investigate missing debug info on mac.
+@@ -2385,7 +2385,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_mac && !is_ios && !is_nacl && current_cpu != "x86" &&
+     if (!is_apple && !is_nacl && current_cpu != "x86" &&
 -        (use_gold || use_lld)) {
 +        (use_gold || use_lld) && !is_bsd) {
        if (is_clang) {
          # This flag enables the GNU-format pubnames and pubtypes sections,
          # which lld needs in order to generate a correct GDB index.
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_config_compiler_compiler.gni b/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_config_compiler_compiler.gni
index 5984a4ff6b60..064760a6fe87 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_config_compiler_compiler.gni
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_config_compiler_compiler.gni
@@ -1,20 +1,11 @@
---- src/3rdparty/chromium/build/config/compiler/compiler.gni.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/build/config/compiler/compiler.gni.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/build/config/compiler/compiler.gni
-@@ -47,7 +47,7 @@ declare_args() {
-   # only two architectures that are currently checked in). Turn this off when
-   # you are using a custom toolchain and need to control -B in cflags.
-   linux_use_bundled_binutils =
--      linux_use_bundled_binutils_override && is_linux &&
-+      linux_use_bundled_binutils_override && (is_linux && !is_bsd) &&
-       (current_cpu == "x64" || current_cpu == "x86")
-   binutils_path = rebase_path("//third_party/binutils/Linux_x64/Release/bin",
-                               root_build_dir)
-@@ -193,7 +193,7 @@ declare_args() {
+@@ -195,7 +195,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/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_config_features.gni b/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_config_features.gni
index bab3166c078d..7a66f85e786d 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_config_features.gni
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_config_features.gni
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/build/config/features.gni.orig	2020-04-29 07:57:35 UTC
+--- src/3rdparty/chromium/build/config/features.gni.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/build/config/features.gni
 @@ -26,7 +26,7 @@ declare_args() {
    proprietary_codecs = is_chrome_branded || is_chromecast
  
    # libudev usage. This currently only affects the content layer.
--  use_udev = is_linux && !is_chromecast
-+  use_udev = is_linux && !is_chromecast && !is_bsd
+-  use_udev = (is_linux || is_chromeos) && !is_chromecast
++  use_udev = (is_linux || is_chromeos) && !is_chromecast && !is_bsd
  
-   use_dbus = is_linux && !is_chromecast
+   use_dbus = (is_linux || is_chromeos) && !is_chromecast
  
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_config_freetype_freetype.gni b/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_config_freetype_freetype.gni
new file mode 100644
index 000000000000..36300a081f3a
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_config_freetype_freetype.gni
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/build/config/freetype/freetype.gni.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/build/config/freetype/freetype.gni
+@@ -10,7 +10,7 @@ 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
+   use_qt_freetype = false
+   qt_freetype_includes = ""
+ }
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_detect__host__arch.py b/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_detect__host__arch.py
index c3f9fbd7e18c..c0a3613db0de 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_detect__host__arch.py
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_detect__host__arch.py
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/build/detect_host_arch.py.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/build/detect_host_arch.py.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/build/detect_host_arch.py
-@@ -19,6 +19,8 @@ def HostArch():
+@@ -21,6 +21,8 @@ def HostArch():
      host_arch = 'ia32'
    elif host_arch in ['x86_64', 'amd64']:
      host_arch = 'x64'
 +  elif host_arch.startswith('arm64'):
 +    host_arch = 'arm64'
    elif host_arch.startswith('arm'):
      host_arch = 'arm'
    elif host_arch.startswith('aarch64'):
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_gn__run__binary.py b/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_gn__run__binary.py
index eddb4b6968b9..c5d1b262db43 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_gn__run__binary.py
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_gn__run__binary.py
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/build/gn_run_binary.py.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/build/gn_run_binary.py.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/build/gn_run_binary.py
-@@ -19,7 +19,7 @@ path = './' + sys.argv[1]
+@@ -24,7 +24,7 @@ args = [path] + sys.argv[2:]
  # The rest of the arguments are passed directly to the executable.
  args = [path] + sys.argv[2:]
  
 -ret = subprocess.call(args)
 +ret = subprocess.call(args, env={"CHROME_EXE_PATH":"${WRKSRC}/out/Release/chrome"})
  if ret != 0:
    if ret <= -100:
      # Windows error codes such as 0xC0000005 and 0xC0000409 are much easier to
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_toolchain_gcc__toolchain.gni b/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_toolchain_gcc__toolchain.gni
index ee1fdffa81bc..67cab2fb1152 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_toolchain_gcc__toolchain.gni
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_toolchain_gcc__toolchain.gni
@@ -1,45 +1,45 @@
---- src/3rdparty/chromium/build/toolchain/gcc_toolchain.gni.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/build/toolchain/gcc_toolchain.gni.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/build/toolchain/gcc_toolchain.gni
-@@ -36,6 +36,11 @@ if (is_linux && target_os == "android") {
-   enable_resource_whitelist_generation = false
+@@ -50,6 +50,11 @@ if (enable_resource_allowlist_generation) {
+       "enable_resource_allowlist_generation=true does not work for target_os=$target_os")
  }
  
 +declare_args() {
 +  extra_cxxflags = ""
 +  extra_ldflags = ""
 +}
 +
  # This template defines a toolchain for something that works like gcc
  # (including clang).
  #
-@@ -589,13 +594,23 @@ template("clang_toolchain") {
+@@ -641,13 +646,23 @@ template("clang_toolchain") {
    }
  
    gcc_toolchain(target_name) {
 -    prefix = rebase_path("$clang_base_path/bin", root_build_dir)
 -    cc = "$prefix/clang"
 -    cxx = "$prefix/clang++"
 -    ld = cxx
 -    readelf = "${toolprefix}readelf"
 -    ar = "${prefix}/llvm-ar"
 -    nm = "${toolprefix}nm"
 +    if (is_bsd) {
 +      prefix = "%%LOCALBASE%%/bin"
 +      cc = "cc"
 +      cxx = "c++"
 +      ld = cxx
 +      readelf = "readelf"
 +      ar = "${prefix}/ar"
 +      nm = "${toolprefix}nm"
 +    } else {
 +      prefix = rebase_path("$clang_base_path/bin", root_build_dir)
 +      cc = "$prefix/clang"
 +      cxx = "$prefix/clang++"
 +      ld = cxx
 +      readelf = "${toolprefix}readelf"
 +      ar = "${prefix}/llvm-ar"
 +      nm = "${toolprefix}nm"
 +    }
  
      forward_variables_from(invoker,
                             [
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_toolchain_get__concurrent__links.py b/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_toolchain_get__concurrent__links.py
index c1e6fae93cb7..1965d2b25c0c 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_toolchain_get__concurrent__links.py
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_toolchain_get__concurrent__links.py
@@ -1,17 +1,17 @@
---- src/3rdparty/chromium/build/toolchain/get_concurrent_links.py.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/build/toolchain/get_concurrent_links.py.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/build/toolchain/get_concurrent_links.py
-@@ -46,6 +46,14 @@ def _GetTotalMemoryInBytes():
+@@ -53,6 +53,14 @@ def _GetTotalMemoryInBytes():
        return int(subprocess.check_output(['sysctl', '-n', 'hw.memsize']))
      except Exception:
        return 0
 +  elif sys.platform.startswith('freebsd'):
 +    try:
 +      avail_bytes = int(subprocess.check_output(['sysctl', '-n', 'hw.physmem']))
 +      # With -fuse-lld it doesn't take a lot of ram, feel free to change that
 +      # 1 * ... to needed amount
 +      return max(1, avail_bytes / (1 * (2 ** 30)))  # total / 4GB
 +    except Exception:
 +      return 1
    # TODO(scottmg): Implement this for other platforms.
    return 0
  
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_browser_devtools_devtools__eye__dropper.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_browser_devtools_devtools__eye__dropper.cc
index cdd6542873b3..86c9cb82b39d 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_browser_devtools_devtools__eye__dropper.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_browser_devtools_devtools__eye__dropper.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/chrome/browser/devtools/devtools_eye_dropper.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/chrome/browser/devtools/devtools_eye_dropper.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/chrome/browser/devtools/devtools_eye_dropper.cc
-@@ -211,7 +211,7 @@ void DevToolsEyeDropper::UpdateCursor() {
+@@ -163,7 +163,7 @@ void DevToolsEyeDropper::UpdateCursor() {
  // magnified projection only with centered hotspot.
  // Mac Retina requires cursor to be > 120px in order to render smoothly.
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    const float kCursorSize = 63;
    const float kDiameter = 63;
    const float kHotspotOffset = 32;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_browser_extensions_api_input__ime_input__ime__api.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_browser_extensions_api_input__ime_input__ime__api.h
deleted file mode 100644
index 4c7b75dade4b..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_browser_extensions_api_input__ime_input__ime__api.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/3rdparty/chromium/chrome/browser/extensions/api/input_ime/input_ime_api.h.orig	2018-11-13 18:25:11 UTC
-+++ src/3rdparty/chromium/chrome/browser/extensions/api/input_ime/input_ime_api.h
-@@ -31,7 +31,7 @@
- 
- #if defined(OS_CHROMEOS)
- #include "chrome/browser/extensions/api/input_ime/input_ime_api_chromeos.h"
--#elif defined(OS_LINUX) || defined(OS_WIN)
-+#elif defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
- #include "chrome/browser/extensions/api/input_ime/input_ime_api_nonchromeos.h"
- #endif  // defined(OS_CHROMEOS)
- 
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_browser_extensions_api_settings__private_prefs__util.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_browser_extensions_api_settings__private_prefs__util.cc
index 43e8dab7405d..a04f720df1cd 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_browser_extensions_api_settings__private_prefs__util.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_browser_extensions_api_settings__private_prefs__util.cc
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/chrome/browser/extensions/api/settings_private/prefs_util.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/chrome/browser/extensions/api/settings_private/prefs_util.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/chrome/browser/extensions/api/settings_private/prefs_util.cc
-@@ -153,7 +153,7 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetWhitelist
-   (*s_whitelist)[bookmarks::prefs::kShowBookmarkBar] =
+@@ -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_whitelist)[::prefs::kUseCustomChromeFrame] =
+   (*s_allowlist)[::prefs::kUseCustomChromeFrame] =
        settings_api::PrefType::PREF_TYPE_BOOLEAN;
  #endif
-@@ -163,7 +163,7 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetWhitelist
+@@ -179,7 +179,7 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlist
    // Appearance settings.
-   (*s_whitelist)[::prefs::kCurrentThemeID] =
+   (*s_allowlist)[::prefs::kCurrentThemeID] =
        settings_api::PrefType::PREF_TYPE_STRING;
 -#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
-   (*s_whitelist)[::prefs::kUsesSystemTheme] =
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+   (*s_allowlist)[::prefs::kUsesSystemTheme] =
        settings_api::PrefType::PREF_TYPE_BOOLEAN;
  #endif
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_browser_media_webrtc_webrtc__event__log__uploader.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_browser_media_webrtc_webrtc__event__log__uploader.cc
new file mode 100644
index 000000000000..63c7c5d69587
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_browser_media_webrtc_webrtc__event__log__uploader.cc
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/chrome/browser/media/webrtc/webrtc_event_log_uploader.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/chrome/browser/media/webrtc/webrtc_event_log_uploader.cc
+@@ -42,6 +42,8 @@ const char kProduct[] = "Chrome_Linux";
+ const char kProduct[] = "Chrome_ChromeOS";
+ #elif defined(OS_LINUX)
+ const char kProduct[] = "Chrome_Linux";
++#elif defined(OS_FREEBSD)
++const char kProduct[] = "Chrome_FreeBSD";
+ #elif defined(OS_ANDROID)
+ const char kProduct[] = "Chrome_Android";
+ #else
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_browser_media_webrtc_webrtc__log__uploader.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_browser_media_webrtc_webrtc__log__uploader.cc
new file mode 100644
index 000000000000..661b4673e99d
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_browser_media_webrtc_webrtc__log__uploader.cc
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/chrome/browser/media/webrtc/webrtc_log_uploader.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/chrome/browser/media/webrtc/webrtc_log_uploader.cc
+@@ -359,6 +359,8 @@ void WebRtcLogUploader::SetupMultipart(
+   const char product[] = "Chrome_Android";
+ #elif defined(OS_CHROMEOS)
+   const char product[] = "Chrome_ChromeOS";
++#elif defined(OS_FREEBSD)
++  const char product[] = "Chrome_FreeBSD";
+ #else
+ #error Platform not supported.
+ #endif
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_browser_media_webrtc_webrtc__logging__controller.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_browser_media_webrtc_webrtc__logging__controller.cc
new file mode 100644
index 000000000000..964a45363da6
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_browser_media_webrtc_webrtc__logging__controller.cc
@@ -0,0 +1,33 @@
+--- src/3rdparty/chromium/chrome/browser/media/webrtc/webrtc_logging_controller.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/chrome/browser/media/webrtc/webrtc_logging_controller.cc
+@@ -23,10 +23,10 @@
+ #include "content/public/browser/browser_context.h"
+ #include "content/public/browser/render_process_host.h"
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "content/public/browser/child_process_security_policy.h"
+ #include "storage/browser/file_system/isolated_context.h"
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ 
+ using webrtc_event_logging::WebRtcEventLogManager;
+ 
+@@ -273,7 +273,7 @@ void WebRtcLoggingController::StartEventLogging(
+         web_app_id, callback);
+ }
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ void WebRtcLoggingController::GetLogsDirectory(
+     LogsDirectoryCallback callback,
+     LogsDirectoryErrorCallback error_callback) {
+@@ -319,7 +319,7 @@ void WebRtcLoggingController::GrantLogsDirectoryAccess
+       FROM_HERE,
+       base::BindOnce(std::move(callback), file_system.id(), registered_name));
+ }
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ 
+ void WebRtcLoggingController::OnRtpPacket(
+     std::unique_ptr<uint8_t[]> packet_header,
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_browser_media_webrtc_webrtc__logging__controller.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_browser_media_webrtc_webrtc__logging__controller.h
new file mode 100644
index 000000000000..14a61283c23d
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_browser_media_webrtc_webrtc__logging__controller.h
@@ -0,0 +1,36 @@
+--- src/3rdparty/chromium/chrome/browser/media/webrtc/webrtc_logging_controller.h.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/chrome/browser/media/webrtc/webrtc_logging_controller.h
+@@ -133,13 +133,13 @@ class WebRtcLoggingController
+                          size_t web_app_id,
+                          const StartEventLoggingCallback& callback);
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   // Ensures that the WebRTC Logs directory exists and then grants render
+   // process access to the 'WebRTC Logs' directory, and invokes |callback| with
+   // the ids necessary to create a DirectoryEntry object.
+   void GetLogsDirectory(LogsDirectoryCallback callback,
+                         LogsDirectoryErrorCallback error_callback);
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ 
+   // chrome::mojom::WebRtcLoggingClient methods:
+   void OnAddMessages(
+@@ -192,7 +192,7 @@ class WebRtcLoggingController
+       bool success,
+       const std::string& error_message);
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   // Grants the render process access to the 'WebRTC Logs' directory, and
+   // invokes |callback| with the ids necessary to create a DirectoryEntry
+   // object. If the |logs_path| couldn't be created or found, |error_callback|
+@@ -200,7 +200,7 @@ class WebRtcLoggingController
+   void GrantLogsDirectoryAccess(LogsDirectoryCallback callback,
+                                 LogsDirectoryErrorCallback error_callback,
+                                 const base::FilePath& logs_path);
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ 
+   static base::FilePath GetLogDirectoryAndEnsureExists(
+       const base::FilePath& browser_context_directory_path);
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_browser_ui_webui_about__ui.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_browser_ui_webui_about__ui.cc
index 83d631589d88..9f2de9901454 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_browser_ui_webui_about__ui.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_browser_ui_webui_about__ui.cc
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/chrome/browser/ui/webui/about_ui.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/chrome/browser/ui/webui/about_ui.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/chrome/browser/ui/webui/about_ui.cc
-@@ -391,7 +391,7 @@ std::string ChromeURLs() {
+@@ -579,7 +579,7 @@ std::string ChromeURLs() {
    return html;
  }
  
--#if defined(OS_LINUX) || defined(OS_OPENBSD)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  std::string AboutLinuxProxyConfig() {
    std::string data;
    AppendHeader(&data, 0,
-@@ -446,7 +446,7 @@ void AboutUIHTMLSource::StartDataRequest(
-                      .GetRawDataResource(idr)
-                      .as_string();
+@@ -635,7 +635,7 @@ void AboutUIHTMLSource::StartDataRequest(
+       response =
+           ui::ResourceBundle::GetSharedInstance().LoadDataResourceString(idr);
      }
--#if defined(OS_LINUX) || defined(OS_OPENBSD)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    } else if (source_name_ == chrome::kChromeUILinuxProxyConfigHost) {
      response = AboutLinuxProxyConfig();
  #endif
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc
index a344a88fd4a2..75395364b420 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc
@@ -1,55 +1,58 @@
---- src/3rdparty/chromium/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc.orig	2020-03-16 14:04:24 UTC
+--- src/3rdparty/chromium/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
-@@ -209,11 +209,11 @@
+@@ -249,12 +249,12 @@
  #include "chrome/browser/ui/webui/conflicts/conflicts_ui.h"
  #endif
  
--#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
-+#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || 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)
  #include "chrome/browser/ui/webui/discards/discards_ui.h"
  #endif
  
--#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_ANDROID)
-+#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+-#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)
  #include "chrome/browser/ui/webui/sandbox/sandbox_internals_ui.h"
  #endif
- 
-@@ -311,7 +311,7 @@ bool IsAboutUI(const GURL& url) {
+@@ -428,7 +428,7 @@ bool IsAboutUI(const GURL& url) {
  #if !defined(OS_ANDROID)
            || url.host_piece() == chrome::kChromeUITermsHost
  #endif
--#if defined(OS_LINUX) || defined(OS_OPENBSD)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
            || url.host_piece() == chrome::kChromeUILinuxProxyConfigHost
  #endif
  #if defined(OS_CHROMEOS)
-@@ -624,7 +624,7 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* we
+@@ -819,7 +819,7 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* we
    if (url.host_piece() == chrome::kChromeUINaClHost)
      return &NewWebUI<NaClUI>;
  #endif
--#if (defined(OS_LINUX) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA)
-+#if (defined(OS_LINUX) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA) || defined(OS_BSD)
+-#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)
    if (url.host_piece() == chrome::kChromeUITabModalConfirmDialogHost)
      return &NewWebUI<ConstrainedWebDialogUI>;
- #endif
-@@ -674,17 +674,17 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* we
-     return &NewWebUI<CastUI>;
+@@ -870,19 +870,19 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* we
+     return &NewWebUI<media_router::MediaRouterInternalsUI>;
    }
  #endif
--#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_ANDROID)
-+#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+-#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)
    if (url.host_piece() == chrome::kChromeUISandboxHost) {
      return &NewWebUI<SandboxInternalsUI>;
    }
  #endif
--#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
-+#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || 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)
    if (url.host_piece() == chrome::kChromeUIDiscardsHost)
      return &NewWebUI<DiscardsUI>;
  #endif
- #if defined(OS_WIN) || defined(OS_MACOSX) || \
+ #if defined(OS_WIN) || defined(OS_MAC) || \
 -    (defined(OS_LINUX) && !defined(OS_CHROMEOS))
 +    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
    if (url.host_piece() == chrome::kChromeUIBrowserSwitchHost)
      return &NewWebUI<BrowserSwitchUI>;
  #endif
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_common_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_common_BUILD.gn
deleted file mode 100644
index e30488ef9348..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_common_BUILD.gn
+++ /dev/null
@@ -1,13 +0,0 @@
---- src/3rdparty/chromium/chrome/common/BUILD.gn.orig	2018-11-13 18:25:11 UTC
-+++ src/3rdparty/chromium/chrome/common/BUILD.gn
-@@ -295,6 +295,10 @@ static_library("common") {
-     public_deps += [ "//ppapi/shared_impl" ]
-   }
- 
-+  if (is_bsd) {
-+    sources -= [ "component_flash_hint_file_linux.cc" ]
-+  }
-+
-   if (enable_extensions) {
-     sources += [
-       "cast_messages.cc",
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_common_chrome__paths.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_common_chrome__paths.cc
index 5ef10846d941..21451f0adc05 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_common_chrome__paths.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_common_chrome__paths.cc
@@ -1,111 +1,99 @@
---- src/3rdparty/chromium/chrome/common/chrome_paths.cc.orig	2020-03-16 14:04:24 UTC
+--- src/3rdparty/chromium/chrome/common/chrome_paths.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/chrome/common/chrome_paths.cc
-@@ -51,21 +51,21 @@ const base::FilePath::CharType kPepperFlashSystemBaseD
+@@ -52,21 +52,29 @@ const base::FilePath::CharType kPepperFlashSystemBaseD
      FILE_PATH_LITERAL("Internet Plug-Ins/PepperFlashPlayer");
  #endif
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  // The path to the external extension <id>.json files.
  // /usr/share seems like a good choice, see: http://www.pathname.com/fhs/
  const base::FilePath::CharType kFilepathSinglePrefExtensions[] =
  #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
--    FILE_PATH_LITERAL("/usr/share/google-chrome/extensions");
++#if defined(OS_BSD)
 +    FILE_PATH_LITERAL("%%LOCALBASE%%/share/google-chrome/extensions");
++#else
+     FILE_PATH_LITERAL("/usr/share/google-chrome/extensions");
++#endif
  #else
--    FILE_PATH_LITERAL("/usr/share/chromium/extensions");
++#if defined(OS_BSD)
 +    FILE_PATH_LITERAL("%%LOCALBASE%%/share/chromium/extensions");
++#else
+     FILE_PATH_LITERAL("/usr/share/chromium/extensions");
++#endif
  #endif  // BUILDFLAG(GOOGLE_CHROME_BRANDING)
  
  // The path to the hint file that tells the pepper plugin loader
  // where it can find the latest component updated flash.
  const base::FilePath::CharType kComponentUpdatedFlashHint[] =
      FILE_PATH_LITERAL("latest-component-updated-flash");
--#endif  // defined(OS_LINUX)
-+#endif  // defined(OS_LINUX) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
- #if defined(OS_LINUX) && BUILDFLAG(ENABLE_WIDEVINE_CDM_COMPONENT)
- // The name of the hint file that tells the latest component updated Widevine
-@@ -204,7 +204,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ #if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && \
+     BUILDFLAG(ENABLE_WIDEVINE_CDM_COMPONENT)
+@@ -207,7 +215,7 @@ bool PathProvider(int key, base::FilePath* result) {
          return false;
        break;
      case chrome::DIR_DEFAULT_DOWNLOADS_SAFE:
--#if defined(OS_WIN) || defined(OS_LINUX)
-+#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
        if (!GetUserDownloadsDirectorySafe(&cur))
          return false;
        break;
-@@ -495,6 +495,9 @@ bool PathProvider(int key, base::FilePath* result) {
+@@ -494,6 +502,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"));
 +#elif defined(OS_BSD)
 +      cur = base::FilePath(FILE_PATH_LITERAL(
 +          "%%LOCALBASE%%/etc/chrome/policies"));
  #else
        cur = base::FilePath(FILE_PATH_LITERAL("/etc/chromium/policies"));
  #endif
-@@ -502,7 +505,7 @@ bool PathProvider(int key, base::FilePath* result) {
+@@ -501,7 +512,7 @@ bool PathProvider(int key, base::FilePath* result) {
      }
  #endif
  #if defined(OS_CHROMEOS) || \
--    (defined(OS_LINUX) && BUILDFLAG(CHROMIUM_BRANDING)) || defined(OS_MACOSX)
-+    ((defined(OS_LINUX) || defined(OS_BSD)) && BUILDFLAG(CHROMIUM_BRANDING)) || defined(OS_MACOSX)
+-    (defined(OS_LINUX) && BUILDFLAG(CHROMIUM_BRANDING)) || defined(OS_MAC)
++    (defined(OS_LINUX) && BUILDFLAG(CHROMIUM_BRANDING)) || defined(OS_MAC) || defined(OS_BSD)
      case chrome::DIR_USER_EXTERNAL_EXTENSIONS: {
        if (!base::PathService::Get(chrome::DIR_USER_DATA, &cur))
          return false;
-@@ -510,7 +513,7 @@ bool PathProvider(int key, base::FilePath* result) {
+@@ -509,7 +520,7 @@ bool PathProvider(int key, base::FilePath* result) {
        break;
      }
  #endif
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
      case chrome::DIR_STANDALONE_EXTERNAL_EXTENSIONS: {
        cur = base::FilePath(kFilepathSinglePrefExtensions);
        break;
-@@ -545,7 +548,7 @@ bool PathProvider(int key, base::FilePath* result) {
+@@ -544,7 +555,7 @@ bool PathProvider(int key, base::FilePath* result) {
  #endif
        break;
  
--#if defined(OS_LINUX) || defined(OS_MACOSX)
-+#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
      case chrome::DIR_NATIVE_MESSAGING:
- #if defined(OS_MACOSX)
+ #if defined(OS_MAC)
  #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
-@@ -559,6 +562,9 @@ bool PathProvider(int key, base::FilePath* result) {
+@@ -558,6 +569,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"));
 +#elif defined(OS_BSD)
 +      cur = base::FilePath(FILE_PATH_LITERAL(
 +          "%%LOCALBASE%%/etc/chrome/native-messaging-hosts"));
  #else
        cur = base::FilePath(FILE_PATH_LITERAL(
            "/etc/chromium/native-messaging-hosts"));
-@@ -571,7 +577,7 @@ bool PathProvider(int key, base::FilePath* result) {
+@@ -570,7 +584,7 @@ bool PathProvider(int key, base::FilePath* result) {
          return false;
        cur = cur.Append(FILE_PATH_LITERAL("NativeMessagingHosts"));
        break;
--#endif  // defined(OS_LINUX) || defined(OS_MACOSX)
-+#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
  #if !defined(OS_ANDROID)
      case chrome::DIR_GLOBAL_GCM_STORE:
        if (!base::PathService::Get(chrome::DIR_USER_DATA, &cur))
-@@ -579,7 +585,7 @@ bool PathProvider(int key, base::FilePath* result) {
-       cur = cur.Append(kGCMStoreDirname);
-       break;
- #endif  // !defined(OS_ANDROID)
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
-     case chrome::FILE_COMPONENT_FLASH_HINT:
-       if (!base::PathService::Get(
-               chrome::DIR_COMPONENT_UPDATED_PEPPER_FLASH_PLUGIN, &cur)) {
-@@ -587,7 +593,7 @@ bool PathProvider(int key, base::FilePath* result) {
-       }
-       cur = cur.Append(kComponentUpdatedFlashHint);
-       break;
--#endif  // defined(OS_LINUX)
-+#endif  // defined(OS_LINUX) || defined(OS_BSD)
- #if defined(OS_CHROMEOS)
-     case chrome::FILE_CHROME_OS_COMPONENT_FLASH:
-       cur = base::FilePath(kChromeOSComponentFlash);
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_common_chrome__paths.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_common_chrome__paths.h
index fe1d715da347..ebe4034bd259 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_common_chrome__paths.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_common_chrome__paths.h
@@ -1,42 +1,29 @@
---- src/3rdparty/chromium/chrome/common/chrome_paths.h.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/chrome/common/chrome_paths.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/chrome/common/chrome_paths.h
-@@ -53,7 +53,7 @@ enum {
+@@ -51,7 +51,7 @@ enum {
                       // contains subdirectories.
  #endif
  #if defined(OS_CHROMEOS) || \
--    (defined(OS_LINUX) && BUILDFLAG(CHROMIUM_BRANDING)) || defined(OS_MACOSX)
-+    ((defined(OS_LINUX) || defined(OS_BSD)) && BUILDFLAG(CHROMIUM_BRANDING)) || defined(OS_MACOSX)
+-    (defined(OS_LINUX) && BUILDFLAG(CHROMIUM_BRANDING)) || defined(OS_MAC)
++    (defined(OS_LINUX) && BUILDFLAG(CHROMIUM_BRANDING)) || defined(OS_MAC) || defined(OS_BSD)
    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
-@@ -61,7 +61,7 @@ enum {
+@@ -59,7 +59,7 @@ enum {
                                   // create it.
  #endif
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    DIR_STANDALONE_EXTERNAL_EXTENSIONS,  // Directory for 'per-extension'
                                         // definition manifest files that
                                         // describe extensions which are to be
-@@ -108,7 +108,7 @@ enum {
+@@ -120,7 +120,7 @@ enum {
    DIR_SUPERVISED_USER_INSTALLED_WHITELISTS,  // Directory where sanitized
                                               // supervised user whitelists are
                                               // installed.
--#if defined(OS_LINUX) || defined(OS_MACOSX)
-+#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+-#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
                                // manifest files are stored.
    DIR_USER_NATIVE_MESSAGING,  // Directory with Native Messaging Hosts
-@@ -123,10 +123,10 @@ enum {
-   DIR_GEN_TEST_DATA,  // Directory where generated test data resides.
-   DIR_TEST_DATA,      // Directory where unit test data resides.
-   DIR_TEST_TOOLS,     // Directory where unit test tools reside.
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
-   FILE_COMPONENT_FLASH_HINT,  // A file in a known location that points to
-                               // the component updated flash plugin.
--#endif  // defined(OS_LINUX)
-+#endif  // defined(OS_LINUX) || defined(OS_BSD)
- #if defined(OS_CHROMEOS)
-   FILE_CHROME_OS_COMPONENT_FLASH,  // The location of component updated Flash on
-                                    // Chrome OS.
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_common_chrome__paths__internal.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_common_chrome__paths__internal.h
index 119738e27b10..55db9c44a65d 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_common_chrome__paths__internal.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_common_chrome__paths__internal.h
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/chrome/common/chrome_paths_internal.h.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/chrome/common/chrome_paths_internal.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/chrome/common/chrome_paths_internal.h
-@@ -45,7 +45,7 @@ void GetUserCacheDirectory(const base::FilePath& profi
+@@ -45,7 +45,7 @@ bool GetUserDocumentsDirectory(base::FilePath* result)
  // Get the path to the user's documents directory.
  bool GetUserDocumentsDirectory(base::FilePath* result);
  
--#if defined(OS_WIN) || defined(OS_LINUX)
-+#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  // Gets the path to a safe default download directory for a user.
  bool GetUserDownloadsDirectorySafe(base::FilePath* result);
  #endif
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_common_chrome__switches.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_common_chrome__switches.cc
index 891541e97a5a..884b939f05e2 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_common_chrome__switches.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_common_chrome__switches.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/chrome/common/chrome_switches.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/chrome/common/chrome_switches.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/chrome/common/chrome_switches.cc
-@@ -860,7 +860,7 @@ const char kAllowNaClFileHandleAPI[]        = "allow-n
+@@ -808,7 +808,7 @@ const char kAllowNaClSocketAPI[]            = "allow-n
  const char kAllowNaClSocketAPI[]            = "allow-nacl-socket-api";
  #endif
  
--#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
-+#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+-#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)
  const char kEnableNewAppMenuIcon[] = "enable-new-app-menu-icon";
  
- // Causes the browser to launch directly in guest mode.
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_common_chrome__switches.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_common_chrome__switches.h
index e4122d43b69d..214902bb4eae 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_common_chrome__switches.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_common_chrome__switches.h
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/chrome/common/chrome_switches.h.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/chrome/common/chrome_switches.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/chrome/common/chrome_switches.h
-@@ -263,7 +263,7 @@ extern const char kAllowNaClFileHandleAPI[];
+@@ -253,7 +253,7 @@ extern const char kAllowNaClSocketAPI[];
  extern const char kAllowNaClSocketAPI[];
  #endif
  
--#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
-+#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+-#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)
  extern const char kEnableNewAppMenuIcon[];
  extern const char kGuest[];
- #endif
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_common_webui__url__constants.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_common_webui__url__constants.cc
index f02817656c6a..85fbcfb34cdc 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_common_webui__url__constants.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_common_webui__url__constants.cc
@@ -1,48 +1,50 @@
---- src/3rdparty/chromium/chrome/common/webui_url_constants.cc.orig	2020-04-08 09:41:36 UTC
+--- src/3rdparty/chromium/chrome/common/webui_url_constants.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/chrome/common/webui_url_constants.cc
-@@ -318,7 +318,7 @@ bool IsSystemWebUIHost(base::StringPiece host) {
- const char kChromeUICastHost[] = "cast";
- #endif
+@@ -340,7 +340,7 @@ bool IsSystemWebUIHost(base::StringPiece host) {
+ }
+ #endif  // defined(OS_CHROMEOS)
  
--#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
-+#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || 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 kChromeUIDiscardsHost[] = "discards";
  const char kChromeUIDiscardsURL[] = "chrome://discards/";
- const char kChromeUIHatsHost[] = "hats";
-@@ -329,17 +329,17 @@ const char kChromeUIHatsURL[] = "chrome://hats/";
+@@ -362,18 +362,18 @@ const char kChromeUILinuxProxyConfigHost[] = "linux-pr
  const char kChromeUILinuxProxyConfigHost[] = "linux-proxy-config";
  #endif
  
--#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_ANDROID)
-+#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+-#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)
  const char kChromeUISandboxHost[] = "sandbox";
  #endif
  
- #if defined(OS_WIN) || defined(OS_MACOSX) || \
+ #if defined(OS_WIN) || defined(OS_MAC) || \
 -    (defined(OS_LINUX) && !defined(OS_CHROMEOS))
 +    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
  const char kChromeUIBrowserSwitchHost[] = "browser-switch";
  const char kChromeUIBrowserSwitchURL[] = "chrome://browser-switch/";
  #endif
  
--#if (defined(OS_LINUX) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA)
-+#if ((defined(OS_LINUX) || defined(OS_BSD)) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA)
+-#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)
  const char kChromeUITabModalConfirmDialogHost[] = "tab-modal-confirm-dialog";
  #endif
- 
-@@ -605,13 +605,13 @@ const char* const kChromeHostURLs[] = {
+@@ -548,14 +548,14 @@ const char* const kChromeHostURLs[] = {
      kChromeUIInternetDetailDialogHost,
      kChromeUIAssistantOptInHost,
  #endif
--#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
-+#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || 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)
      kChromeUIDiscardsHost,
  #endif
- #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
+ #if defined(OS_POSIX) && !defined(OS_MAC) && !defined(OS_ANDROID)
      kChromeUILinuxProxyConfigHost,
  #endif
--#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_ANDROID)
-+#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+-#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)
      kChromeUISandboxHost,
  #endif
- #if defined(OS_WIN)
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_common_webui__url__constants.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_common_webui__url__constants.h
index ecf37559478f..ea1f93f9bfd1 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_common_webui__url__constants.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_common_webui__url__constants.h
@@ -1,32 +1,33 @@
---- src/3rdparty/chromium/chrome/common/webui_url_constants.h.orig	2020-03-16 14:04:24 UTC
+--- src/3rdparty/chromium/chrome/common/webui_url_constants.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/chrome/common/webui_url_constants.h
-@@ -268,7 +268,7 @@ bool IsSystemWebUIHost(base::StringPiece host);
- extern const char kChromeUICastHost[];
- #endif
+@@ -291,7 +291,7 @@ bool IsSystemWebUIHost(base::StringPiece host);
+ 
+ #endif  // defined(OS_CHROMEOS)
  
--#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
-+#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || 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 kChromeUIDiscardsHost[];
  extern const char kChromeUIDiscardsURL[];
- extern const char kChromeUIHatsHost[];
-@@ -280,17 +280,17 @@ extern const char kChromeUIHatsURL[];
+@@ -311,18 +311,18 @@ extern const char kChromeUILinuxProxyConfigHost[];
  extern const char kChromeUILinuxProxyConfigHost[];
  #endif
  
--#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_ANDROID)
-+#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+-#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_MACOSX) || \
+ #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(TOOLKIT_VIEWS)) || defined(USE_AURA)
-+#if ((defined(OS_LINUX) || defined(OS_BSD)) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA)
+-#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/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_renderer_pepper_pepper__flash__font__file__host.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_renderer_pepper_pepper__flash__font__file__host.cc
index 89c9cc80e1f3..747cbfebde8f 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_renderer_pepper_pepper__flash__font__file__host.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_renderer_pepper_pepper__flash__font__file__host.cc
@@ -1,29 +1,29 @@
---- src/3rdparty/chromium/chrome/renderer/pepper/pepper_flash_font_file_host.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/chrome/renderer/pepper/pepper_flash_font_file_host.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/chrome/renderer/pepper/pepper_flash_font_file_host.cc
 @@ -15,7 +15,7 @@
  #include "ppapi/proxy/ppapi_messages.h"
  #include "ppapi/proxy/serialized_structs.h"
  
--#if defined(OS_LINUX) || defined(OS_OPENBSD)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #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(
      const ppapi::proxy::SerializedFontDescription& description,
      PP_PrivateFontCharset charset)
      : ResourceHost(host->GetPpapiHost(), instance, resource) {
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    // 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
                                            void* buffer,
                                            size_t* length) {
    bool result = false;
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    if (font_file_.IsValid()) {
      result = content::GetFontTable(font_file_.GetPlatformFile(), table,
                                     0 /* offset */,
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_renderer_pepper_pepper__flash__font__file__host.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_renderer_pepper_pepper__flash__font__file__host.h
index 4196fbdcfb81..2c9bb754f5f5 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_renderer_pepper_pepper__flash__font__file__host.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_chrome_renderer_pepper_pepper__flash__font__file__host.h
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/chrome/renderer/pepper/pepper_flash_font_file_host.h.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/chrome/renderer/pepper/pepper_flash_font_file_host.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/chrome/renderer/pepper/pepper_flash_font_file_host.h
 @@ -14,7 +14,7 @@
  #include "ppapi/c/private/pp_private_font_charset.h"
  #include "ppapi/host/resource_host.h"
  
--#if defined(OS_LINUX) || defined(OS_OPENBSD)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include "base/files/file.h"
  #elif defined(OS_WIN)
  #include "third_party/skia/include/core/SkRefCnt.h"
 @@ -50,7 +50,7 @@ class PepperFlashFontFileHost : public ppapi::host::Re
                           uint32_t table);
    bool GetFontData(uint32_t table, void* buffer, size_t* length);
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    base::File font_file_;
  #elif defined(OS_WIN)
    sk_sp<SkTypeface> typeface_;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_autofill_content_renderer_password__form__conversion__utils.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_autofill_content_renderer_password__form__conversion__utils.cc
index 0cc2901ad127..245226303b78 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_autofill_content_renderer_password__form__conversion__utils.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_autofill_content_renderer_password__form__conversion__utils.cc
@@ -1,14 +1,14 @@
---- src/3rdparty/chromium/components/autofill/content/renderer/password_form_conversion_utils.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/components/autofill/content/renderer/password_form_conversion_utils.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/components/autofill/content/renderer/password_form_conversion_utils.cc
-@@ -37,7 +37,11 @@
+@@ -19,7 +19,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"
 +#if defined(OS_BSD)
 +#include <re2/re2.h>
 +#else
  #include "third_party/re2/src/re2/re2.h"
 +#endif
  #include "url/gurl.h"
  
- using blink::WebFormControlElement;
+ using blink::WebElement;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_content__settings_core_browser_website__settings__registry.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_content__settings_core_browser_website__settings__registry.cc
index 4daa3daa7d8f..608408ef215a 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_content__settings_core_browser_website__settings__registry.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_content__settings_core_browser_website__settings__registry.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/components/content_settings/core/browser/website_settings_registry.cc.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/components/content_settings/core/browser/website_settings_registry.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/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_MACOSX) && !defined(OS_IOS)
+ #elif defined(OS_MAC)
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_cookie__config_cookie__store__util.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_cookie__config_cookie__store__util.cc
index eac52d7007d0..1f2fc10e6575 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_cookie__config_cookie__store__util.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_cookie__config_cookie__store__util.cc
@@ -1,24 +1,26 @@
---- src/3rdparty/chromium/components/cookie_config/cookie_store_util.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/components/cookie_config/cookie_store_util.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/components/cookie_config/cookie_store_util.cc
-@@ -11,7 +11,7 @@
+@@ -11,7 +11,7 @@ namespace cookie_config {
  
  namespace cookie_config {
  
--#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
-+#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+-#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)
  namespace {
  
- // Use the operating system's mechanisms to encrypt cookies before writing
-@@ -63,10 +63,10 @@ base::LazyInstance<CookieOSCryptoDelegate>::Destructor
+@@ -64,12 +64,12 @@ net::CookieCryptoDelegate* GetCookieCryptoDelegate() {
  net::CookieCryptoDelegate* GetCookieCryptoDelegate() {
    return g_cookie_crypto_delegate.Pointer();
  }
--#else   // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
-+#else   // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+-#else   // defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) ||
++#else   // defined(OS_WIN) || defined(OS_APPLE) || defined(OS_LINUX) || defined(OS_BSD) ||
+         // defined(OS_CHROMEOS)
  net::CookieCryptoDelegate* GetCookieCryptoDelegate() {
    return NULL;
  }
--#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
-+#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || 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)
  
  }  // namespace cookie_config
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_crash_content_browser_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_crash_content_browser_BUILD.gn
index 137500aa4e33..49d8263ef3be 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_crash_content_browser_BUILD.gn
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_crash_content_browser_BUILD.gn
@@ -1,27 +1,27 @@
---- src/3rdparty/chromium/components/crash/content/browser/BUILD.gn.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/components/crash/content/browser/BUILD.gn.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/components/crash/content/browser/BUILD.gn
-@@ -28,7 +28,7 @@ source_set("browser") {
+@@ -35,7 +35,7 @@ source_set("browser") {
      "//content/public/common",
    ]
  
--  if (is_linux || is_android) {
-+  if ((is_linux && !is_bsd) || is_android) {
+-  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.
-@@ -42,13 +42,13 @@ source_set("browser") {
+@@ -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/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_crash_core_common_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_crash_core_common_BUILD.gn
index 31dad0abae33..c7be0520b797 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_crash_core_common_BUILD.gn
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_crash_core_common_BUILD.gn
@@ -1,31 +1,40 @@
---- src/3rdparty/chromium/components/crash/core/common/BUILD.gn.orig	2020-03-16 14:04:24 UTC
+--- src/3rdparty/chromium/components/crash/core/common/BUILD.gn.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/components/crash/core/common/BUILD.gn
-@@ -7,7 +7,7 @@ import("//components/gwp_asan/buildflags/buildflags.gn
+@@ -7,7 +7,7 @@ declare_args() {
  
  declare_args() {
    # If set to true, this will stub out and disable the entire crash key system.
 -  use_crash_key_stubs = is_fuchsia
 +  use_crash_key_stubs = is_fuchsia || is_bsd
  }
  
  group("common") {
-@@ -110,7 +110,9 @@ target(crash_key_target_type, "crash_key_lib") {
-       ]
-     }
+@@ -32,7 +32,7 @@ use_crashpad_annotation =
+ # implementations will be instantiated and set, doubling the storage
+ # used for keys. This is intended to be used temporarily to test Crashpad
+ # integrations without disabling Breakpad.
+-use_combined_annotations = is_linux || is_chromeos
++use_combined_annotations = (is_linux || is_chromeos) && !is_bsd
  
--    deps += [ "//third_party/breakpad:client" ]
+ buildflag_header("crash_buildflags") {
+   header = "crash_buildflags.h"
+@@ -93,7 +93,9 @@ target(crash_key_target_type, "crash_key_lib") {
+     sources += [ "crash_key_stubs.cc" ]
+   } else if (use_crashpad_annotation) {
+     sources += [ "crash_key_crashpad.cc" ]
+-    deps += [ "//third_party/crashpad/crashpad/client" ]
 +    if (!is_bsd) {
-+      deps += [ "//third_party/breakpad:client" ]
++      deps += [ "//third_party/crashpad/crashpad/client" ]
 +    }
-     if (use_combined_annotations) {
-       public_deps += [ "//third_party/crashpad/crashpad/client" ]
-     }
-@@ -173,7 +175,7 @@ source_set("unit_tests") {
-     sources += [ "objc_zombie_unittest.mm" ]
-   }
+   } else {
+     include_dirs = [ "//third_party/breakpad/breakpad/src" ]
  
--  if (!is_mac && !is_ios && !is_win && !is_fuchsia && !is_android) {
-+  if (!is_mac && !is_ios && !is_win && !is_fuchsia && !is_android && !is_bsd) {
+@@ -184,7 +186,7 @@ source_set("unit_tests") {
+     sources += [ "crash_key_breakpad_ios_unittest.cc" ]
+     deps += [ "//third_party/breakpad:client" ]
+     include_dirs = [ "//third_party/breakpad/breakpad/src/" ]
+-  } else if (!is_mac && !is_win && !is_fuchsia && !is_android) {
++  } else if (!is_mac && !is_win && !is_fuchsia && !is_android && !is_bsd) {
      include_dirs = [ "//third_party/breakpad/breakpad/src/" ]
      sources += [ "crash_key_breakpad_unittest.cc" ]
    }
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_download_internal_common_base__file.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_download_internal_common_base__file.cc
index fcc55937477f..ba8b58303645 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_download_internal_common_base__file.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_download_internal_common_base__file.cc
@@ -1,11 +1,20 @@
---- src/3rdparty/chromium/components/download/internal/common/base_file.cc.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/components/download/internal/common/base_file.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/components/download/internal/common/base_file.cc
-@@ -446,7 +446,7 @@ DownloadInterruptReason BaseFile::LogInterruptReason(
-   return reason;
- }
+@@ -604,7 +604,7 @@ GURL GetEffectiveAuthorityURL(const GURL& source_url,
+ 
+ }  // namespace
  
--#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
-+#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+-#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)
  
- namespace {
+ DownloadInterruptReason BaseFile::AnnotateWithSourceInformationSync(
+@@ -623,7 +623,7 @@ DownloadInterruptReason BaseFile::AnnotateWithSourceIn
  
+   return QuarantineFileResultToReason(result);
+ }
+-#else  // !OS_WIN && !OS_APPLE && !OS_LINUX && !OS_CHROMEOS
++#else  // !OS_WIN && !OS_APPLE && !OS_LINUX && !OS_CHROMEOS && !OS_BSD
+ DownloadInterruptReason BaseFile::AnnotateWithSourceInformationSync(
+     const std::string& client_guid,
+     const GURL& source_url,
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_feedback_anonymizer__tool.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_feedback_anonymizer__tool.cc
deleted file mode 100644
index d78e21053979..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_feedback_anonymizer__tool.cc
+++ /dev/null
@@ -1,14 +0,0 @@
---- src/3rdparty/chromium/components/feedback/anonymizer_tool.cc.orig	2019-05-23 12:39:34 UTC
-+++ src/3rdparty/chromium/components/feedback/anonymizer_tool.cc
-@@ -13,7 +13,11 @@
- #include "base/strings/stringprintf.h"
- #include "content/public/browser/browser_thread.h"
- #include "net/base/ip_address.h"
-+#if defined(OS_BSD)
-+#include <re2/re2.h>
-+#else
- #include "third_party/re2/src/re2/re2.h"
-+#endif
- 
- using re2::RE2;
- 
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_flags__ui_flags__state.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_flags__ui_flags__state.cc
index b79cf25a8b9a..1681114b5093 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_flags__ui_flags__state.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_flags__ui_flags__state.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/components/flags_ui/flags_state.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/components/flags_ui/flags_state.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/components/flags_ui/flags_state.cc
-@@ -653,7 +653,7 @@ int FlagsState::GetCurrentPlatform() {
+@@ -687,7 +687,7 @@ int FlagsState::GetCurrentPlatform() {
    return kOsWin;
- #elif defined(OS_CHROMEOS)  // Needs to be before the OS_LINUX check.
+ #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/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_keyed__service_core_dependency__graph__unittest.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_keyed__service_core_dependency__graph__unittest.cc
deleted file mode 100644
index 8c2789392175..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_keyed__service_core_dependency__graph__unittest.cc
+++ /dev/null
@@ -1,14 +0,0 @@
---- src/3rdparty/chromium/components/keyed_service/core/dependency_graph_unittest.cc.orig	2018-11-13 18:25:11 UTC
-+++ src/3rdparty/chromium/components/keyed_service/core/dependency_graph_unittest.cc
-@@ -9,7 +9,11 @@
- #include "components/keyed_service/core/dependency_graph.h"
- #include "components/keyed_service/core/dependency_node.h"
- #include "testing/gtest/include/gtest/gtest.h"
-+#if defined(OS_BSD)
-+#include <re2/re2.h>
-+#else
- #include "third_party/re2/src/re2/re2.h"
-+#endif
- 
- namespace {
- 
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_metrics_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_metrics_BUILD.gn
index 6698ef0eabd4..8c681fab859f 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_metrics_BUILD.gn
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_metrics_BUILD.gn
@@ -1,14 +1,14 @@
---- src/3rdparty/chromium/components/metrics/BUILD.gn.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/components/metrics/BUILD.gn.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/components/metrics/BUILD.gn
-@@ -142,6 +142,11 @@ static_library("metrics") {
+@@ -190,6 +190,11 @@ jumbo_static_library("metrics") {
    if (is_fuchsia) {
      sources += [ "drive_metrics_provider_fuchsia.cc" ]
    }
 +  
 +  if (is_bsd) {
 +    sources -= [ "system_memory_stats_recorder_linux.cc" ]
 +  }
 +
  }
  
- # The component metrics provider is a separate target because it depends upon
+ if (is_android) {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_metrics_metrics__log.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_metrics_metrics__log.cc
index 374e750efb1e..56242b06e5a7 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_metrics_metrics__log.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_metrics_metrics__log.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/components/metrics/metrics_log.cc.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/components/metrics/metrics_log.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/components/metrics/metrics_log.cc
-@@ -198,7 +198,7 @@ void MetricsLog::RecordCoreSystemProfile(MetricsServic
+@@ -224,7 +224,7 @@ void MetricsLog::RecordCoreSystemProfile(
  // OperatingSystemVersion refers to the ChromeOS release version.
  #if defined(OS_CHROMEOS)
    os->set_kernel_version(base::SysInfo::KernelVersion());
 -#elif defined(OS_LINUX)
 +#elif defined(OS_LINUX) || 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/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_metrics_system__memory__stats__recorder__linux.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_metrics_system__memory__stats__recorder__linux.cc
deleted file mode 100644
index e3340e52c178..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_metrics_system__memory__stats__recorder__linux.cc
+++ /dev/null
@@ -1,18 +0,0 @@
---- src/3rdparty/chromium/components/metrics/system_memory_stats_recorder_linux.cc.orig	2019-11-27 21:12:25 UTC
-+++ src/3rdparty/chromium/components/metrics/system_memory_stats_recorder_linux.cc
-@@ -30,6 +30,7 @@ namespace metrics {
-   UMA_HISTOGRAM_LINEAR(name, sample, 2500, 50)
- 
- void RecordMemoryStats(RecordMemoryStatsType type) {
-+#if !defined(OS_FREEBSD)
-   base::SystemMemoryInfoKB memory;
-   if (!base::GetSystemMemoryInfo(&memory))
-     return;
-@@ -81,6 +82,7 @@ void RecordMemoryStats(RecordMemoryStatsType type) {
-       break;
-     }
-   }
-+#endif // !defined(OS_FREEBSD)
- }
- 
- }  // namespace metrics
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_neterror_resources_neterror.js b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_neterror_resources_neterror.js
index 6fee612e68ba..6bd54f98757c 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_neterror_resources_neterror.js
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_neterror_resources_neterror.js
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/components/neterror/resources/neterror.js.orig	2020-04-08 09:41:36 UTC
+--- src/3rdparty/chromium/components/neterror/resources/neterror.js.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/components/neterror/resources/neterror.js
-@@ -201,7 +201,7 @@ function setUpCachedButton(buttonStrings) {
+@@ -153,7 +153,7 @@ let primaryControlOnLeft = true;
  }
  
  let primaryControlOnLeft = true;
 -// <if expr="is_macosx or is_ios or is_linux or is_android">
 +// <if expr="is_macosx or is_ios or is_linux or is_android or is_bsd">
  primaryControlOnLeft = false;
  // </if>
  
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_network__session__configurator_browser_network__session__configurator.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_network__session__configurator_browser_network__session__configurator.cc
index 15b66ed1b8b7..4b94d182fb20 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_network__session__configurator_browser_network__session__configurator.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_network__session__configurator_browser_network__session__configurator.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/components/network_session_configurator/browser/network_session_configurator.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/components/network_session_configurator/browser/network_session_configurator.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/components/network_session_configurator/browser/network_session_configurator.cc
-@@ -591,7 +591,7 @@ net::URLRequestContextBuilder::HttpCacheParams::Type C
+@@ -749,7 +749,7 @@ net::URLRequestContextBuilder::HttpCacheParams::Type C
    }
  #endif  // #if !defined(OS_ANDROID)
  
 -#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
 +#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    return net::URLRequestContextBuilder::HttpCacheParams::DISK_SIMPLE;
  #else
    return net::URLRequestContextBuilder::HttpCacheParams::DISK_BLOCKFILE;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_os__crypt_os__crypt.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_os__crypt_os__crypt.h
index ea074e866ea3..bd01dccf79e2 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_os__crypt_os__crypt.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_os__crypt_os__crypt.h
@@ -1,48 +1,48 @@
---- src/3rdparty/chromium/components/os_crypt/os_crypt.h.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/components/os_crypt/os_crypt.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/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_MACOSX) && !defined(OS_IOS))
+ #if defined(OS_WIN) || defined(OS_MAC)
  class PrefRegistrySimple;
-@@ -34,13 +34,13 @@ struct Config;
+@@ -34,13 +34,13 @@ class OSCrypt {
  // 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_MACOSX) || (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+#if defined(OS_MACOSX) || (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(
+@@ -146,6 +146,6 @@ COMPONENT_EXPORT(OS_CRYPT) void ClearCacheForTesting()
  // 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/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_os__crypt_os__crypt__unittest.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_os__crypt_os__crypt__unittest.cc
deleted file mode 100644
index 1f8f1fdcada7..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_os__crypt_os__crypt__unittest.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/3rdparty/chromium/components/os_crypt/os_crypt_unittest.cc.orig	2018-11-13 18:25:11 UTC
-+++ src/3rdparty/chromium/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/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_storage__monitor_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_storage__monitor_BUILD.gn
deleted file mode 100644
index 35762dbd4a7e..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_storage__monitor_BUILD.gn
+++ /dev/null
@@ -1,16 +0,0 @@
---- src/3rdparty/chromium/components/storage_monitor/BUILD.gn.orig	2019-11-27 21:12:25 UTC
-+++ src/3rdparty/chromium/components/storage_monitor/BUILD.gn
-@@ -79,6 +79,13 @@ static_library("storage_monitor") {
-     }
-   }
- 
-+  if (is_bsd) {
-+    sources += [
-+      "storage_monitor_freebsd.cc",
-+      "storage_monitor_freebsd.h",
-+    ]
-+  }
-+
-   if (use_udev) {
-     sources += [
-       "udev_util_linux.cc",
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_storage__monitor_removable__device__constants.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_storage__monitor_removable__device__constants.cc
deleted file mode 100644
index d19717d86250..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_storage__monitor_removable__device__constants.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/3rdparty/chromium/components/storage_monitor/removable_device_constants.cc.orig	2019-05-23 12:39:34 UTC
-+++ src/3rdparty/chromium/components/storage_monitor/removable_device_constants.cc
-@@ -10,7 +10,7 @@ namespace storage_monitor {
- const char kFSUniqueIdPrefix[] = "UUID:";
- const char kVendorModelSerialPrefix[] = "VendorModelSerial:";
- 
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
- const char kVendorModelVolumeStoragePrefix[] = "VendorModelVolumeStorage:";
- #endif
- 
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_storage__monitor_removable__device__constants.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_storage__monitor_removable__device__constants.h
deleted file mode 100644
index 7bddc6a7c8d3..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_storage__monitor_removable__device__constants.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/3rdparty/chromium/components/storage_monitor/removable_device_constants.h.orig	2019-05-23 12:39:34 UTC
-+++ src/3rdparty/chromium/components/storage_monitor/removable_device_constants.h
-@@ -15,7 +15,7 @@ namespace storage_monitor {
- extern const char kFSUniqueIdPrefix[];
- extern const char kVendorModelSerialPrefix[];
- 
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
- extern const char kVendorModelVolumeStoragePrefix[];
- #endif
- 
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_storage__monitor_storage__monitor__freebsd.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_storage__monitor_storage__monitor__freebsd.cc
deleted file mode 100644
index 792dfbb705c2..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_storage__monitor_storage__monitor__freebsd.cc
+++ /dev/null
@@ -1,57 +0,0 @@
---- src/3rdparty/chromium/components/storage_monitor/storage_monitor_freebsd.cc.orig	2018-12-29 13:28:53 UTC
-+++ src/3rdparty/chromium/components/storage_monitor/storage_monitor_freebsd.cc
-@@ -0,0 +1,54 @@
-+// 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.
-+
-+// StorageMonitorFreeBSD implementation.
-+
-+#include "components/storage_monitor/storage_monitor_freebsd.h"
-+
-+#include <stdio.h>
-+
-+#include <list>
-+
-+#include "base/bind.h"
-+#include "base/metrics/histogram.h"
-+#include "base/process/kill.h"
-+#include "base/process/launch.h"
-+#include "base/stl_util.h"
-+#include "base/strings/string_number_conversions.h"
-+#include "base/strings/string_util.h"
-+#include "base/strings/utf_string_conversions.h"
-+#include "components/storage_monitor/media_storage_util.h"
-+#include "components/storage_monitor/removable_device_constants.h"
-+#include "components/storage_monitor/storage_info.h"
-+
-+using content::BrowserThread;
-+
-+namespace storage_monitor {
-+
-+namespace {
-+
-+}  // namespace
-+
-+StorageMonitorFreeBSD::StorageMonitorFreeBSD() {
-+  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
-+}
-+
-+StorageMonitorFreeBSD::~StorageMonitorFreeBSD() {
-+  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
-+}
-+
-+void StorageMonitorFreeBSD::Init() {
-+}
-+
-+bool StorageMonitorFreeBSD::GetStorageInfoForPath(
-+    const base::FilePath& path,
-+    StorageInfo* device_info) const {
-+  return false; // TODO
-+}
-+
-+StorageMonitor* StorageMonitor::CreateInternal() {
-+  return new StorageMonitorFreeBSD();
-+}
-+
-+} // namespace storage_monitor
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_storage__monitor_storage__monitor__freebsd.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_storage__monitor_storage__monitor__freebsd.h
deleted file mode 100644
index 0194a8cc6d9a..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_storage__monitor_storage__monitor__freebsd.h
+++ /dev/null
@@ -1,48 +0,0 @@
---- src/3rdparty/chromium/components/storage_monitor/storage_monitor_freebsd.h.orig	2017-01-29 22:59:23 UTC
-+++ src/3rdparty/chromium/components/storage_monitor/storage_monitor_freebsd.h
-@@ -0,0 +1,45 @@
-+// 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.
-+
-+// StorageMonitorFreeBSD processes mount point change events, notifies listeners
-+// about the addition and deletion of media devices, and answers queries about
-+// mounted devices.
-+// StorageMonitorFreeBSD lives on the UI thread, and uses ???
-+// the FILE thread to get mount point change events.
-+
-+#ifndef COMPONENTS_STORAGE_MONITOR_STORAGE_MONITOR_FREEBSD_H_
-+#define COMPONENTS_STORAGE_MONITOR_STORAGE_MONITOR_FREEBSD_H_
-+
-+#include <map>
-+#include <string>
-+
-+#include "base/compiler_specific.h"
-+#include "base/files/file_path.h"
-+#include "base/files/file_path_watcher.h"
-+#include "base/memory/weak_ptr.h"
-+#include "components/storage_monitor/storage_monitor.h"
-+#include "content/public/browser/browser_thread.h"
-+
-+namespace storage_monitor {
-+
-+class StorageMonitorFreeBSD : public StorageMonitor {
-+ public:
-+  // Should only be called by browser start up code.
-+  // Use StorageMonitor::GetInstance() instead.
-+  explicit StorageMonitorFreeBSD();
-+  virtual ~StorageMonitorFreeBSD();
-+
-+  // Must be called for StorageMonitorFreeBSD to work.
-+  virtual void Init() override;
-+ private:
-+  // StorageMonitor implementation.
-+  virtual bool GetStorageInfoForPath(const base::FilePath& path,
-+                                     StorageInfo* device_info) const override;
-+
-+  DISALLOW_COPY_AND_ASSIGN(StorageMonitorFreeBSD);
-+};
-+
-+} // namespace storage_monitor
-+
-+#endif  // COMPONENTS_STORAGE_MONITOR_STORAGE_MONITOR_FREEBSD_H_
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_update__client_update__query__params.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_update__client_update__query__params.cc
index c71549e7a32b..1bc5548599b8 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_update__client_update__query__params.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_update__client_update__query__params.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/components/update_client/update_query_params.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/components/update_client/update_query_params.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/components/update_client/update_query_params.cc
-@@ -38,6 +38,8 @@ const char kOs[] =
+@@ -39,6 +39,8 @@ const char kOs[] =
      "fuchsia";
  #elif defined(OS_OPENBSD)
      "openbsd";
 +#elif defined(OS_FREEBSD)
 +    "freebsd";
  #else
  #error "unknown os"
  #endif
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_url__matcher_regex__set__matcher.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_url__matcher_regex__set__matcher.cc
index 09e3b8de29b2..6f062a13afaf 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_url__matcher_regex__set__matcher.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_url__matcher_regex__set__matcher.cc
@@ -1,16 +1,16 @@
---- src/3rdparty/chromium/components/url_matcher/regex_set_matcher.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/components/url_matcher/regex_set_matcher.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/components/url_matcher/regex_set_matcher.cc
-@@ -11,8 +11,13 @@
+@@ -12,8 +12,13 @@
  #include "base/logging.h"
  #include "base/strings/string_util.h"
  #include "components/url_matcher/substring_set_matcher.h"
 +#if defined(OS_BSD)
 +#include <re2/filtered_re2.h>
 +#include <re2/re2.h>
 +#else
  #include "third_party/re2/src/re2/filtered_re2.h"
  #include "third_party/re2/src/re2/re2.h"
 +#endif
  
  namespace url_matcher {
  
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_app_content__main.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_app_content__main.cc
new file mode 100644
index 000000000000..7aeb08df039b
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_app_content__main.cc
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/content/app/content_main.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/content/app/content_main.cc
+@@ -232,7 +232,7 @@ int RunContentProcess(const ContentMainParams& params,
+     base::EnableTerminationOnOutOfMemory();
+ #endif
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+     // The various desktop environments set this environment variable that
+     // allows the dbus client library to connect directly to the bus. When this
+     // variable is not set (test environments like xvfb-run), the dbus client
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_app_content__main__runner__impl.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_app_content__main__runner__impl.cc
index 00cd0cb587ca..ff289e2267aa 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_app_content__main__runner__impl.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_app_content__main__runner__impl.cc
@@ -1,73 +1,65 @@
---- src/3rdparty/chromium/content/app/content_main_runner_impl.cc.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/content/app/content_main_runner_impl.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/app/content_main_runner_impl.cc
-@@ -93,17 +93,17 @@
- #include "base/posix/global_descriptors.h"
- #include "content/public/common/content_descriptors.h"
- 
--#if !defined(OS_MACOSX)
-+#if !defined(OS_MACOSX) && !defined(OS_BSD)
- #include "services/service_manager/zygote/common/zygote_fork_delegate_linux.h"
- #endif
--#if !defined(OS_MACOSX) && !defined(OS_ANDROID)
-+#if !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
- #include "sandbox/linux/services/libc_interceptor.h"
- #include "services/service_manager/zygote/zygote_main.h"
- #endif
+@@ -131,7 +131,7 @@
  
  #endif  // OS_POSIX || OS_FUCHSIA
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include "base/native_library.h"
  #include "base/rand_util.h"
- #include "services/service_manager/zygote/common/common_sandbox_support_linux.h"
-@@ -126,7 +126,7 @@
- #if BUILDFLAG(ENABLE_WEBRTC)
- #include "third_party/webrtc_overrides/init_webrtc.h"  // nogncheck
+ #include "content/public/common/zygote/sandbox_support_linux.h"
+@@ -150,7 +150,7 @@
+ #include "content/public/common/content_client.h"
  #endif
--#endif  // OS_LINUX
-+#endif  // OS_LINUX || defined(OS_BSD)
  
- #if !defined(CHROME_MULTIPLE_DLL_BROWSER)
- #include "content/child/field_trial.h"
-@@ -314,7 +314,7 @@ void InitializeZygoteSandboxForBrowserProcess(
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ 
+ #if BUILDFLAG(USE_ZYGOTE_HANDLE)
+ #include "content/browser/sandbox_host_linux.h"
+@@ -308,7 +308,7 @@ void InitializeZygoteSandboxForBrowserProcess(
  }
  #endif  // BUILDFLAG(USE_ZYGOTE_HANDLE)
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
  #if BUILDFLAG(ENABLE_PLUGINS)
  // Loads the (native) libraries but does not initialize them (i.e., does not
-@@ -413,7 +413,7 @@ void PreSandboxInit() {
+@@ -401,7 +401,7 @@ void PreSandboxInit() {
  }
  #endif  // BUILDFLAG(USE_ZYGOTE_HANDLE)
  
--#endif  // OS_LINUX
-+#endif  // OS_LINUX || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
  }  // namespace
  
-@@ -471,7 +471,7 @@ int RunZygote(ContentMainDelegate* delegate) {
+@@ -464,7 +464,7 @@ int RunZygote(ContentMainDelegate* delegate) {
    delegate->ZygoteStarting(&zygote_fork_delegates);
    media::InitializeMediaLibrary();
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    PreSandboxInit();
  #endif
  
-@@ -644,11 +644,11 @@ int ContentMainRunnerImpl::Initialize(const ContentMai
-                    base::GlobalDescriptors::kBaseDescriptor);
- #endif  // !OS_ANDROID
- 
--#if defined(OS_LINUX) || defined(OS_OPENBSD)
-+#if defined(OS_LINUX)
-     g_fds->Set(service_manager::kCrashDumpSignal,
-                service_manager::kCrashDumpSignal +
-                    base::GlobalDescriptors::kBaseDescriptor);
--#endif  // OS_LINUX || OS_OPENBSD
-+#endif  // OS_LINUX
+@@ -841,7 +841,7 @@ int ContentMainRunnerImpl::Run(bool start_service_mana
+       delegate_->PostFieldTrialInitialization();
+     }
  
- #endif  // !OS_WIN
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+     // 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
+@@ -851,7 +851,7 @@ int ContentMainRunnerImpl::Run(bool start_service_mana
+       CHECK_EQ(mojo::LoadCoreLibrary(GetMojoCoreSharedLibraryPath()),
+                MOJO_RESULT_OK);
+     }
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   }
  
+   MainFunctionParams main_params(command_line);
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_BUILD.gn
index 534c876cd7f1..f30e7619d0fe 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_BUILD.gn
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_BUILD.gn
@@ -1,12 +1,18 @@
---- src/3rdparty/chromium/content/browser/BUILD.gn.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/content/browser/BUILD.gn.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/browser/BUILD.gn
-@@ -2003,6 +2003,9 @@ jumbo_static_library("browser") {
-     # resources on other platforms.
-     deps += [ "//content/browser/devtools:devtools_resources" ]
+@@ -2090,6 +2090,15 @@ jumbo_static_library("browser") {
+     deps += [ "//third_party/speech-dispatcher" ]
    }
+ 
 +  if (is_bsd) {
-+    deps -= [ "//services/service_manager/zygote" ]
++    sources -= [
++      "sandbox_host_linux.cc",
++      "sandbox_host_linux.h",
++      "sandbox_ipc_linux.cc",
++      "sandbox_ipc_linux.h",
++    ]
 +  }
- 
-   if (enable_basic_printing) {
-     deps += [ "//printing" ]
++
+   # ChromeOS also defines linux but their memory-monitors conflict.
+   if (is_chromeos) {
+     sources += [
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_browser__main__loop.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_browser__main__loop.cc
index 84d2a3b34f81..a5c964121a11 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_browser__main__loop.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_browser__main__loop.cc
@@ -1,34 +1,38 @@
---- src/3rdparty/chromium/content/browser/browser_main_loop.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/content/browser/browser_main_loop.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/browser/browser_main_loop.cc
-@@ -247,6 +247,13 @@
- #include "mojo/public/cpp/bindings/lib/test_random_mojo_delays.h"
+@@ -372,7 +372,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)
+   monitor = std::make_unique<util::MultiSourceMemoryPressureMonitor>();
  #endif
+   // No memory monitor on other platforms...
+@@ -618,7 +618,7 @@ int BrowserMainLoop::EarlyInitialization() {
  
-+#if defined(OS_BSD)
-+#include "content/browser/sandbox_host_linux.h"
-+#include "services/service_manager/zygote/common/common_sandbox_support_linux.h"
-+#include "content/public/common/common_sandbox_support_linux.h"
-+#include "services/service_manager/sandbox/sandbox.h"
-+#endif
-+
- // One of the linux specific headers defines this as a macro.
- #ifdef DestroyAll
- #undef DestroyAll
-@@ -665,7 +672,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).
+-#if !defined(OS_MAC)
++#if !defined(OS_MAC) && !defined(OS_BSD)
+   if (base::FeatureList::IsEnabled(
+           features::kBrowserUseDisplayThreadPriority) &&
+       base::PlatformThread::GetCurrentThreadPriority() <
+@@ -628,7 +628,7 @@ int BrowserMainLoop::EarlyInitialization() {
    }
- #endif  // !defined(OS_MACOSX)
+ #endif  // !defined(OS_MAC)
  
--#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
-+#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) || \
+-#if defined(OS_MAC) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
++#if defined(OS_MAC) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) || \
      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.
-@@ -675,7 +682,7 @@ int BrowserMainLoop::EarlyInitialization() {
+@@ -638,7 +638,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);
--#endif  // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_CHROMEOS) ||
-+#endif  // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) ||
+-#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_ANDROID)
  
  #if defined(OS_WIN)
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_child__process__launcher__helper__linux.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_child__process__launcher__helper__linux.cc
index 6654ccf5d093..f9745942ff4a 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_child__process__launcher__helper__linux.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_child__process__launcher__helper__linux.cc
@@ -1,90 +1,77 @@
---- src/3rdparty/chromium/content/browser/child_process_launcher_helper_linux.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/content/browser/child_process_launcher_helper_linux.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/browser/child_process_launcher_helper_linux.cc
-@@ -18,7 +18,9 @@
+@@ -18,9 +18,12 @@
+ #include "content/public/common/content_switches.h"
+ #include "content/public/common/result_codes.h"
  #include "content/public/common/sandboxed_process_launcher_delegate.h"
- #include "services/service_manager/sandbox/linux/sandbox_linux.h"
- #include "services/service_manager/zygote/common/common_sandbox_support_linux.h"
++
 +#if !defined(OS_BSD)
- #include "services/service_manager/zygote/common/zygote_handle.h"
+ #include "content/public/common/zygote/sandbox_support_linux.h"
+ #include "content/public/common/zygote/zygote_handle.h"
+ #include "sandbox/policy/linux/sandbox_linux.h"
 +#endif
- #include "services/service_manager/zygote/host/zygote_communication_linux.h"
- #include "services/service_manager/zygote/host/zygote_host_impl_linux.h"
  
-@@ -50,11 +52,13 @@ bool ChildProcessLauncherHelper::BeforeLaunchOnLaunche
+ namespace content {
+ namespace internal {
+@@ -50,10 +53,12 @@ bool ChildProcessLauncherHelper::BeforeLaunchOnLaunche
    options->fds_to_remap = files_to_register.GetMappingWithIDAdjustment(
        base::GlobalDescriptors::kBaseDescriptor);
  
 +#if !defined(OS_BSD)
    if (GetProcessType() == switches::kRendererProcess) {
      const int sandbox_fd = SandboxHostLinux::GetInstance()->GetChildSocket();
-     options->fds_to_remap.push_back(
-         std::make_pair(sandbox_fd, service_manager::GetSandboxFD()));
+     options->fds_to_remap.push_back(std::make_pair(sandbox_fd, GetSandboxFD()));
    }
 +#endif
  
    options->environment = delegate_->GetEnvironment();
  
-@@ -69,6 +73,7 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThr
+@@ -68,6 +73,7 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThr
      int* launch_result) {
    *is_synchronous_launch = true;
  
 +#if !defined(OS_BSD)
-   service_manager::ZygoteHandle zygote_handle =
+   ZygoteHandle zygote_handle =
        base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kNoZygote)
            ? nullptr
-@@ -82,7 +87,6 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThr
-         GetProcessType());
-     *launch_result = LAUNCH_RESULT_SUCCESS;
- 
--#if !defined(OS_OPENBSD)
-     if (handle) {
-       // It could be a renderer process or an utility process.
-       int oom_score = content::kMiscOomScore;
-@@ -92,13 +96,13 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThr
-       service_manager::ZygoteHostImpl::GetInstance()->AdjustRendererOOMScore(
-           handle, oom_score);
-     }
--#endif
- 
-     Process process;
-     process.process = base::Process(handle);
+@@ -97,6 +103,7 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThr
      process.zygote = zygote_handle;
      return process;
    }
 +#endif
  
    Process process;
    process.process = base::LaunchProcess(*command_line(), options);
-@@ -116,10 +120,14 @@ ChildProcessTerminationInfo ChildProcessLauncherHelper
+@@ -114,10 +121,14 @@ ChildProcessTerminationInfo ChildProcessLauncherHelper
      const ChildProcessLauncherHelper::Process& process,
      bool known_dead) {
    ChildProcessTerminationInfo info;
 +#if !defined(OS_BSD)
    if (process.zygote) {
      info.status = process.zygote->GetTerminationStatus(
          process.process.Handle(), known_dead, &info.exit_code);
    } else if (known_dead) {
 +#else
 +  if (known_dead) {
 +#endif
      info.status = base::GetKnownDeadTerminationStatus(process.process.Handle(),
                                                        &info.exit_code);
    } else {
-@@ -143,13 +151,17 @@ void ChildProcessLauncherHelper::ForceNormalProcessTer
+@@ -141,13 +152,17 @@ void ChildProcessLauncherHelper::ForceNormalProcessTer
    DCHECK(CurrentlyOnProcessLauncherTaskRunner());
-   process.process.Terminate(service_manager::RESULT_CODE_NORMAL_EXIT, false);
+   process.process.Terminate(RESULT_CODE_NORMAL_EXIT, false);
    // On POSIX, we must additionally reap the child.
 +#if !defined(OS_BSD)
    if (process.zygote) {
      // If the renderer was created via a zygote, we have to proxy the reaping
      // through the zygote process.
      process.zygote->EnsureProcessTerminated(process.process.Handle());
    } else {
 +#endif
      base::EnsureProcessTerminated(std::move(process.process));
 +#if !defined(OS_BSD)
    }
 +#endif
  }
  
  void ChildProcessLauncherHelper::SetProcessPriorityOnLauncherThread(
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_compositor_viz__process__transport__factory.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_compositor_viz__process__transport__factory.cc
index 10c04f977b9f..39be10cafee1 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_compositor_viz__process__transport__factory.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_compositor_viz__process__transport__factory.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/content/browser/compositor/viz_process_transport_factory.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/content/browser/compositor/viz_process_transport_factory.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/browser/compositor/viz_process_transport_factory.cc
-@@ -109,7 +109,7 @@ class HostDisplayClient : public viz::HostDisplayClien
+@@ -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/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_devtools_protocol_system__info__handler.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_devtools_protocol_system__info__handler.cc
index 522db7b2f24b..95219a8fb29a 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_devtools_protocol_system__info__handler.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_devtools_protocol_system__info__handler.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/content/browser/devtools/protocol/system_info_handler.cc.orig	2020-03-16 14:04:24 UTC
+--- src/3rdparty/chromium/content/browser/devtools/protocol/system_info_handler.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/browser/devtools/protocol/system_info_handler.cc
-@@ -48,7 +48,7 @@ std::unique_ptr<SystemInfo::Size> GfxSizeToSystemInfoS
+@@ -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.
+ // 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(NDEBUG))
-+#if ((defined(OS_LINUX) || defined(OS_BSD)) && !defined(NDEBUG))
- const int kGPUInfoWatchdogTimeoutMs = 20000;
- #elif defined(OS_WIN)
+-#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/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_font__access_font__enumeration__cache.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_font__access_font__enumeration__cache.h
new file mode 100644
index 000000000000..d880e41854fc
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_font__access_font__enumeration__cache.h
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/content/browser/font_access/font_enumeration_cache.h.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/content/browser/font_access/font_enumeration_cache.h
+@@ -15,7 +15,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"
+ 
+-#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/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_gpu_compositor__util.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_gpu_compositor__util.cc
new file mode 100644
index 000000000000..c214dbcc9d9a
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_gpu_compositor__util.cc
@@ -0,0 +1,16 @@
+--- src/3rdparty/chromium/content/browser/gpu/compositor_util.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/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/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_gpu_gpu__process__host.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_gpu_gpu__process__host.cc
index 1732a21eac4e..2c63b58e6486 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_gpu_gpu__process__host.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_gpu_gpu__process__host.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/content/browser/gpu/gpu_process_host.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/content/browser/gpu/gpu_process_host.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/browser/gpu/gpu_process_host.cc
-@@ -1076,7 +1076,7 @@ bool GpuProcessHost::LaunchGpuProcess() {
+@@ -1123,7 +1123,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)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#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_MACOSX)
+ #elif defined(OS_MAC)
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_media_media__internals.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_media_media__internals.cc
deleted file mode 100644
index 1a0ece4173e5..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_media_media__internals.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/3rdparty/chromium/content/browser/media/media_internals.cc.orig	2020-11-07 01:22:36 UTC
-+++ src/3rdparty/chromium/content/browser/media/media_internals.cc
-@@ -560,7 +560,7 @@ void MediaInternals::UpdateVideoCaptureDeviceCapabilit
-     device_dict->SetString("id", descriptor.device_id);
-     device_dict->SetString("name", descriptor.GetNameAndModel());
-     device_dict->Set("formats", std::move(format_list));
--#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
-+#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \
-     defined(OS_ANDROID)
-     device_dict->SetString("captureApi", descriptor.GetCaptureApiTypeString());
- #endif
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_ppapi__plugin__process__host.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_ppapi__plugin__process__host.cc
index 985b0b4c1f82..e00a71969337 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_ppapi__plugin__process__host.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_ppapi__plugin__process__host.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/content/browser/ppapi_plugin_process_host.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/content/browser/ppapi_plugin_process_host.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/browser/ppapi_plugin_process_host.cc
-@@ -359,7 +359,7 @@ bool PpapiPluginProcessHost::Init(const PepperPluginIn
+@@ -364,7 +364,7 @@ bool PpapiPluginProcessHost::Init(const PepperPluginIn
    base::CommandLine::StringType plugin_launcher =
        browser_command_line.GetSwitchValueNative(switches::kPpapiPluginLauncher);
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#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_MACOSX)
+ #elif defined(OS_MAC)
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_ppapi__plugin__process__host__receiver__bindings.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_ppapi__plugin__process__host__receiver__bindings.cc
index 25b0bff9f590..84693b1d83fe 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_ppapi__plugin__process__host__receiver__bindings.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_ppapi__plugin__process__host__receiver__bindings.cc
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/content/browser/ppapi_plugin_process_host_receiver_bindings.cc.orig	2020-03-16 14:04:24 UTC
+--- src/3rdparty/chromium/content/browser/ppapi_plugin_process_host_receiver_bindings.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/browser/ppapi_plugin_process_host_receiver_bindings.cc
 @@ -8,7 +8,7 @@
  
  #include "build/build_config.h"
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include "components/services/font/public/mojom/font_service.mojom.h"  // nogncheck
  #include "content/browser/font_service.h"  // nogncheck
  #endif
-@@ -17,7 +17,7 @@ namespace content {
+@@ -17,7 +17,7 @@ void PpapiPluginProcessHost::BindHostReceiver(
  
  void PpapiPluginProcessHost::BindHostReceiver(
      mojo::GenericPendingReceiver receiver) {
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    if (auto font_receiver = receiver.As<font_service::mojom::FontService>())
      ConnectToFontService(std::move(font_receiver));
  #endif
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_delegated__frame__host.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_delegated__frame__host.cc
new file mode 100644
index 000000000000..feac86732ec5
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_delegated__frame__host.cc
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/content/browser/renderer_host/delegated_frame_host.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/content/browser/renderer_host/delegated_frame_host.cc
+@@ -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)
+     // 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/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_input_input__device__change__observer.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_input_input__device__change__observer.cc
index 32f2adfcf953..b248bbb43b91 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_input_input__device__change__observer.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_input_input__device__change__observer.cc
@@ -1,29 +1,29 @@
---- src/3rdparty/chromium/content/browser/renderer_host/input/input_device_change_observer.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/content/browser/renderer_host/input/input_device_change_observer.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/browser/renderer_host/input/input_device_change_observer.cc
-@@ -10,7 +10,7 @@
+@@ -9,7 +9,7 @@
  
  #if defined(OS_WIN)
  #include "ui/events/devices/input_device_observer_win.h"
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include "ui/events/devices/device_data_manager.h"
  #elif defined(OS_ANDROID)
  #include "ui/events/devices/input_device_observer_android.h"
-@@ -22,7 +22,7 @@ InputDeviceChangeObserver::InputDeviceChangeObserver(R
+@@ -21,7 +21,7 @@ InputDeviceChangeObserver::InputDeviceChangeObserver(R
    render_view_host_impl_ = rvhi;
  #if defined(OS_WIN)
    ui::InputDeviceObserverWin::GetInstance()->AddObserver(this);
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    ui::DeviceDataManager::GetInstance()->AddObserver(this);
  #elif defined(OS_ANDROID)
    ui::InputDeviceObserverAndroid::GetInstance()->AddObserver(this);
-@@ -32,7 +32,7 @@ InputDeviceChangeObserver::InputDeviceChangeObserver(R
+@@ -31,7 +31,7 @@ InputDeviceChangeObserver::~InputDeviceChangeObserver(
  InputDeviceChangeObserver::~InputDeviceChangeObserver() {
  #if defined(OS_WIN)
    ui::InputDeviceObserverWin::GetInstance()->RemoveObserver(this);
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    ui::DeviceDataManager::GetInstance()->RemoveObserver(this);
  #elif defined(OS_ANDROID)
    ui::InputDeviceObserverAndroid::GetInstance()->RemoveObserver(this);
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_pepper_pepper__file__io__host.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_pepper_pepper__file__io__host.cc
index 6b13a3848c6f..dc982fe6c9e0 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_pepper_pepper__file__io__host.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_pepper_pepper__file__io__host.cc
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/content/browser/renderer_host/pepper/pepper_file_io_host.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/content/browser/renderer_host/pepper/pepper_file_io_host.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/browser/renderer_host/pepper/pepper_file_io_host.cc
-@@ -432,7 +432,7 @@ void PepperFileIOHost::OnLocalFileOpened(
+@@ -438,7 +438,7 @@ void PepperFileIOHost::OnLocalFileOpened(
      ppapi::host::ReplyMessageContext reply_context,
      const base::FilePath& path,
      base::File::Error error_code) {
--#if defined(OS_WIN) || defined(OS_LINUX)
-+#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    // 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) {
-@@ -452,7 +452,7 @@ void PepperFileIOHost::OnLocalFileOpened(
+@@ -459,7 +459,7 @@ void PepperFileIOHost::OnLocalFileOpened(
  #endif
  }
  
--#if defined(OS_WIN) || defined(OS_LINUX)
-+#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  void PepperFileIOHost::OnLocalFileQuarantined(
      ppapi::host::ReplyMessageContext reply_context,
      const base::FilePath& path,
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__message__filter.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__message__filter.cc
index e26881bc62f1..cb06875c7f46 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__message__filter.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__message__filter.cc
@@ -1,29 +1,29 @@
---- src/3rdparty/chromium/content/browser/renderer_host/render_message_filter.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/content/browser/renderer_host/render_message_filter.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/browser/renderer_host/render_message_filter.cc
-@@ -73,7 +73,7 @@
- #if defined(OS_MACOSX)
+@@ -70,7 +70,7 @@
+ #if defined(OS_MAC)
  #include "ui/accelerated_widget_mac/window_resize_helper_mac.h"
  #endif
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include "base/linux_util.h"
  #include "base/threading/platform_thread.h"
  #endif
-@@ -165,7 +165,7 @@ void RenderMessageFilter::CreateFullscreenWidget(
-   std::move(callback).Run(route_id);
+@@ -117,7 +117,7 @@ void RenderMessageFilter::GenerateRoutingID(
+   std::move(callback).Run(render_widget_helper_->GetNextRoutingID());
  }
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  void RenderMessageFilter::SetThreadPriorityOnFileThread(
      base::PlatformThreadId ns_tid,
      base::ThreadPriority priority) {
-@@ -186,7 +186,7 @@ void RenderMessageFilter::SetThreadPriorityOnFileThrea
+@@ -138,7 +138,7 @@ void RenderMessageFilter::SetThreadPriorityOnFileThrea
  }
  #endif
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  void RenderMessageFilter::SetThreadPriority(int32_t ns_tid,
                                              base::ThreadPriority priority) {
    constexpr base::TaskTraits kTraits = {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__message__filter.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__message__filter.h
index ed96990da419..f9da823099a0 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__message__filter.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__message__filter.h
@@ -1,19 +1,19 @@
---- src/3rdparty/chromium/content/browser/renderer_host/render_message_filter.h.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/content/browser/renderer_host/render_message_filter.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/browser/renderer_host/render_message_filter.h
-@@ -110,14 +110,14 @@ class CONTENT_EXPORT RenderMessageFilter
-       const url::Origin& cache_storage_origin,
-       const std::string& cache_storage_cache_name) override;
+@@ -79,14 +79,14 @@ class CONTENT_EXPORT RenderMessageFilter
+   // mojom::RenderMessageFilter:
+   void GenerateRoutingID(GenerateRoutingIDCallback routing_id) override;
    void HasGpuProcess(HasGpuProcessCallback callback) override;
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    void SetThreadPriority(int32_t ns_tid,
                           base::ThreadPriority priority) override;
  #endif
  
    void OnResolveProxy(const GURL& url, IPC::Message* reply_msg);
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    void SetThreadPriorityOnFileThread(base::PlatformThreadId ns_tid,
                                       base::ThreadPriority priority);
  #endif
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__process__host__impl.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__process__host__impl.cc
index 4bb971655ad5..2a88644d74c1 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__process__host__impl.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__process__host__impl.cc
@@ -1,47 +1,56 @@
---- src/3rdparty/chromium/content/browser/renderer_host/render_process_host_impl.cc.orig	2020-03-16 14:04:24 UTC
+--- src/3rdparty/chromium/content/browser/renderer_host/render_process_host_impl.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/browser/renderer_host/render_process_host_impl.cc
-@@ -236,7 +236,7 @@
- #include "content/browser/gpu/gpu_data_manager_impl.h"
+@@ -234,7 +234,7 @@
+ #include "third_party/blink/public/mojom/android_font_lookup/android_font_lookup.mojom.h"
  #endif
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include <sys/resource.h>
  #include <sys/time.h>
  
-@@ -1165,7 +1165,7 @@ static constexpr size_t kUnknownPlatformProcessLimit =
+@@ -1232,7 +1232,7 @@ size_t GetPlatformProcessLimit() {
  // to indicate failure and std::numeric_limits<size_t>::max() to indicate
  // unlimited.
  size_t GetPlatformProcessLimit() {
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    struct rlimit limit;
    if (getrlimit(RLIMIT_NPROC, &limit) != 0)
      return kUnknownPlatformProcessLimit;
-@@ -1176,7 +1176,7 @@ size_t GetPlatformProcessLimit() {
+@@ -1243,7 +1243,7 @@ size_t GetPlatformProcessLimit() {
  #else
    // TODO(https://crbug.com/104689): Implement on other platforms.
    return kUnknownPlatformProcessLimit;
--#endif  // defined(OS_LINUX)
-+#endif  // defined(OS_LINUX) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  }
  #endif  // !defined(OS_ANDROID) && !defined(OS_CHROMEOS)
  
-@@ -1218,7 +1218,7 @@ void RenderProcessHostImpl::IOThreadHostImpl::BindHost
+@@ -1325,7 +1325,7 @@ void RenderProcessHostImpl::IOThreadHostImpl::BindHost
        return;
    }
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    if (auto font_receiver = receiver.As<font_service::mojom::FontService>()) {
      ConnectToFontService(std::move(font_receiver));
      return;
-@@ -1588,7 +1588,7 @@ bool RenderProcessHostImpl::Init() {
+@@ -1751,7 +1751,7 @@ bool RenderProcessHostImpl::Init() {
    renderer_prefix =
        browser_command_line.GetSwitchValueNative(switches::kRendererCmdPrefix);
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    int flags = renderer_prefix.empty() ? ChildProcessHost::CHILD_ALLOW_SELF
                                        : ChildProcessHost::CHILD_NORMAL;
- #elif defined(OS_MACOSX)
+ #elif defined(OS_MAC)
+@@ -3323,7 +3323,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLin
+ #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !BUILDFLAG(IS_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/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__process__host__impl.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__process__host__impl.h
deleted file mode 100644
index 9a11ad8fb389..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__process__host__impl.h
+++ /dev/null
@@ -1,15 +0,0 @@
---- src/3rdparty/chromium/content/browser/renderer_host/render_process_host_impl.h.orig	2018-11-13 18:25:11 UTC
-+++ src/3rdparty/chromium/content/browser/renderer_host/render_process_host_impl.h
-@@ -348,10 +348,10 @@ class CONTENT_EXPORT RenderProcessHostImpl
-     is_for_guests_only_ = is_for_guests_only;
-   }
- 
--#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX)
-+#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) && !defined(OS_BSD)
-   // Launch the zygote early in the browser startup.
-   static void EarlyZygoteLaunch();
--#endif  // defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX)
-+#endif  // defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) && !defined(OS_BSD)
- 
-   void RecomputeAndUpdateWebKitPreferences();
- 
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__view__host__impl.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__view__host__impl.cc
index cfdb8ac96242..c894a87f3090 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__view__host__impl.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__view__host__impl.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/content/browser/renderer_host/render_view_host_impl.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/content/browser/renderer_host/render_view_host_impl.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/browser/renderer_host/render_view_host_impl.cc
-@@ -151,7 +151,7 @@ void GetPlatformSpecificPrefs(RendererPreferences* pre
+@@ -278,7 +278,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);
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    prefs->system_font_family_name = gfx::Font().GetFontName();
- #endif
- }
+ #elif defined(OS_FUCHSIA)
+   // Make Blink's "focus ring" invisible. The focus ring is a hairline border
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__widget__host__view__aura.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__widget__host__view__aura.cc
index c678141dcccb..6435eed7c8dd 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__widget__host__view__aura.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__widget__host__view__aura.cc
@@ -1,29 +1,43 @@
---- src/3rdparty/chromium/content/browser/renderer_host/render_widget_host_view_aura.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/content/browser/renderer_host/render_widget_host_view_aura.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/browser/renderer_host/render_widget_host_view_aura.cc
-@@ -119,7 +119,7 @@
+@@ -111,11 +111,11 @@
+ #include "ui/gfx/gdi_util.h"
+ #endif
+ 
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
  #include "content/browser/accessibility/browser_accessibility_auralinux.h"
  #endif
  
 -#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_BSD) || 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
-@@ -2077,7 +2077,7 @@ bool RenderWidgetHostViewAura::NeedsInputGrab() {
+@@ -492,7 +492,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)
+   BrowserAccessibilityManager* manager =
+       host()->GetOrCreateRootBrowserAccessibilityManager();
+   if (manager && manager->GetRoot())
+@@ -2224,7 +2224,7 @@ bool RenderWidgetHostViewAura::NeedsMouseCapture() {
  }
  
  bool RenderWidgetHostViewAura::NeedsMouseCapture() {
 -#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
 +#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
    return NeedsInputGrab();
- #endif
+ #else
    return false;
-@@ -2277,7 +2277,7 @@ void RenderWidgetHostViewAura::ForwardKeyboardEventWit
+@@ -2388,7 +2388,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)
    ui::TextEditKeyBindingsDelegateAuraLinux* keybinding_delegate =
        ui::GetTextEditKeyBindingsDelegate();
    std::vector<ui::TextEditCommandAuraLinux> commands;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__widget__host__view__event__handler.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__widget__host__view__event__handler.cc
index ee7bceefecfb..f4e3be677cf4 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__widget__host__view__event__handler.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_renderer__host_render__widget__host__view__event__handler.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/content/browser/renderer_host/render_widget_host_view_event_handler.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/content/browser/renderer_host/render_widget_host_view_event_handler.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/browser/renderer_host/render_widget_host_view_event_handler.cc
-@@ -619,7 +619,7 @@ bool RenderWidgetHostViewEventHandler::CanRendererHand
+@@ -716,7 +716,7 @@ bool RenderWidgetHostViewEventHandler::CanRendererHand
    if (event->type() == ui::ET_MOUSE_EXITED) {
      if (mouse_locked || selection_popup)
        return false;
--#if defined(OS_WIN) || defined(OS_LINUX)
-+#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
      // Don't forward the mouse leave message which is received when the context
      // menu is displayed by the page. This confuses the page and causes state
      // changes.
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_scheduler_responsiveness_jank__monitor.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_scheduler_responsiveness_jank__monitor__impl.cc
similarity index 77%
rename from www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_scheduler_responsiveness_jank__monitor.cc
rename to www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_scheduler_responsiveness_jank__monitor__impl.cc
index 60eb18543e75..8966735056af 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_scheduler_responsiveness_jank__monitor.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_scheduler_responsiveness_jank__monitor__impl.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/content/browser/scheduler/responsiveness/jank_monitor.cc.orig	2019-11-27 21:12:25 UTC
-+++ src/3rdparty/chromium/content/browser/scheduler/responsiveness/jank_monitor.cc
-@@ -298,7 +298,7 @@ void JankMonitor::ThreadExecutionState::DidRunTaskOrEv
+--- src/3rdparty/chromium/content/browser/scheduler/responsiveness/jank_monitor_impl.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/content/browser/scheduler/responsiveness/jank_monitor_impl.cc
+@@ -332,7 +332,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)
      task_execution_metadata_.clear();
  #endif
      return;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_scheduler_responsiveness_native__event__observer.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_scheduler_responsiveness_native__event__observer.cc
index 578cfdec2c4e..175b00bda991 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_scheduler_responsiveness_native__event__observer.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_scheduler_responsiveness_native__event__observer.cc
@@ -1,29 +1,29 @@
---- src/3rdparty/chromium/content/browser/scheduler/responsiveness/native_event_observer.cc.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/content/browser/scheduler/responsiveness/native_event_observer.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/browser/scheduler/responsiveness/native_event_observer.cc
 @@ -15,7 +15,7 @@
  
  #include "ui/events/platform/platform_event_source.h"
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include "ui/aura/env.h"
  #include "ui/events/event.h"
  #endif
 @@ -39,7 +39,7 @@ NativeEventObserver::~NativeEventObserver() {
    DeregisterObserver();
  }
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  void NativeEventObserver::RegisterObserver() {
    aura::Env::GetInstance()->AddWindowEventDispatcherObserver(this);
  }
 @@ -61,7 +61,7 @@ void NativeEventObserver::OnWindowEventDispatcherFinis
    did_run_event_callback_.Run(info.unique_id);
    events_being_processed_.pop_back();
  }
--#endif  // defined(OS_LINUX)
-+#endif  // defined(OS_LINUX) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
  #if defined(OS_WIN)
  void NativeEventObserver::RegisterObserver() {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_scheduler_responsiveness_native__event__observer.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_scheduler_responsiveness_native__event__observer.h
index fd00071c4d7f..279d409f0de7 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_scheduler_responsiveness_native__event__observer.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_scheduler_responsiveness_native__event__observer.h
@@ -1,47 +1,47 @@
---- src/3rdparty/chromium/content/browser/scheduler/responsiveness/native_event_observer.h.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/content/browser/scheduler/responsiveness/native_event_observer.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/browser/scheduler/responsiveness/native_event_observer.h
 @@ -14,7 +14,7 @@
  #include "content/public/browser/native_event_processor_observer_mac.h"
  #endif
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include "ui/aura/window_event_dispatcher_observer.h"
  #endif
  
-@@ -39,7 +39,7 @@ namespace responsiveness {
+@@ -39,7 +39,7 @@ class CONTENT_EXPORT NativeEventObserver
  class CONTENT_EXPORT NativeEventObserver
- #if defined(OS_MACOSX)
+ #if defined(OS_MAC)
      : public NativeEventProcessorObserver
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
      : public aura::WindowEventDispatcherObserver
  #elif defined(OS_WIN)
      : public base::MessagePumpForUI::Observer
 @@ -56,7 +56,7 @@ class CONTENT_EXPORT NativeEventObserver
    NativeEventObserver(WillRunEventCallback will_run_event_callback,
                        DidRunEventCallback did_run_event_callback);
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    ~NativeEventObserver() override;
  #else
    virtual ~NativeEventObserver();
 @@ -68,7 +68,7 @@ class CONTENT_EXPORT NativeEventObserver
    // Exposed for tests.
    void WillRunNativeEvent(const void* opaque_identifier) override;
    void DidRunNativeEvent(const void* opaque_identifier) override;
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    // aura::WindowEventDispatcherObserver overrides:
    void OnWindowEventDispatcherStartedProcessing(
        aura::WindowEventDispatcher* dispatcher,
 @@ -85,7 +85,7 @@ class CONTENT_EXPORT NativeEventObserver
    void RegisterObserver();
    void DeregisterObserver();
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    struct EventInfo {
      const void* unique_id;
    };
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_scheduler_responsiveness_watcher.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_scheduler_responsiveness_watcher.cc
deleted file mode 100644
index e22ca804e81f..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_scheduler_responsiveness_watcher.cc
+++ /dev/null
@@ -1,20 +0,0 @@
---- src/3rdparty/chromium/content/browser/scheduler/responsiveness/watcher.cc.orig	2019-11-27 21:12:25 UTC
-+++ src/3rdparty/chromium/content/browser/scheduler/responsiveness/watcher.cc
-@@ -96,7 +96,7 @@ void Watcher::DidRunTask(const base::PendingTask* task
-     // 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)
-     return currently_running_metadata_ui_.clear();
- #endif
-     DCHECK_LE(*mismatched_task_identifiers, 1);
-@@ -156,7 +156,7 @@ void Watcher::DidRunEventOnUIThread(const void* opaque
-     mismatched_event_identifiers_ui_ += 1;
-     // See comment in DidRunTask() for why |currently_running_metadata_ui_| may
-     // be reset.
--#if !defined(OS_CHROMEOS) && defined(OS_LINUX) && defined(USE_OZONE)
-+#if !defined(OS_CHROMEOS) && (defined(OS_LINUX) || defined(OS_BSD)) && defined(USE_OZONE)
-     return currently_running_metadata_ui_.clear();
- #endif
-     DCHECK_LE(mismatched_event_identifiers_ui_, 1);
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_utility__process__host.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_utility__process__host.cc
index 1ff7abe0b599..e3a8e61dba2a 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_utility__process__host.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_utility__process__host.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/content/browser/utility_process_host.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/content/browser/utility_process_host.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/browser/utility_process_host.cc
-@@ -247,7 +247,7 @@ UtilityProcessHost::UtilityProcessHost()
+@@ -59,7 +59,7 @@ UtilityProcessHost::UtilityProcessHost(std::unique_ptr
  
  UtilityProcessHost::UtilityProcessHost(std::unique_ptr<Client> client)
-     : sandbox_type_(service_manager::SandboxType::kUtility),
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+     : 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/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_utility__process__host__receiver__bindings.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_utility__process__host__receiver__bindings.cc
index 3c600bd92a52..8905dcb4cd74 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_utility__process__host__receiver__bindings.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_utility__process__host__receiver__bindings.cc
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/content/browser/utility_process_host_receiver_bindings.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/content/browser/utility_process_host_receiver_bindings.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/browser/utility_process_host_receiver_bindings.cc
-@@ -8,7 +8,7 @@
+@@ -10,7 +10,7 @@
+ #include "content/public/browser/content_browser_client.h"
+ #include "content/public/common/content_client.h"
  
- #include "build/build_config.h"
- 
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include "components/services/font/public/mojom/font_service.mojom.h"  // nogncheck
  #include "content/browser/font_service.h"  // nogncheck
  #endif
-@@ -17,7 +17,7 @@ namespace content {
+@@ -19,7 +19,7 @@ void UtilityProcessHost::BindHostReceiver(
  
  void UtilityProcessHost::BindHostReceiver(
      mojo::GenericPendingReceiver receiver) {
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    if (auto font_receiver = receiver.As<font_service::mojom::FontService>()) {
      ConnectToFontService(std::move(font_receiver));
      return;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_v8__snapshot__files.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_v8__snapshot__files.cc
index 654e1887c973..64cdfdf1d236 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_v8__snapshot__files.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_v8__snapshot__files.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/content/browser/v8_snapshot_files.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/content/browser/v8_snapshot_files.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/browser/v8_snapshot_files.cc
-@@ -10,7 +10,7 @@
+@@ -10,7 +10,7 @@ std::map<std::string, base::FilePath> GetV8SnapshotFil
  namespace content {
  
  std::map<std::string, base::FilePath> GetV8SnapshotFilesToPreload() {
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #if defined(USE_V8_CONTEXT_SNAPSHOT)
    return {{kV8ContextSnapshotDataDescriptor,
-            base::FilePath(FILE_PATH_LITERAL("v8_context_snapshot.bin"))}};
+            base::FilePath(FILE_PATH_LITERAL(V8_CONTEXT_SNAPSHOT_FILENAME))}};
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_web__contents_web__contents__view__aura.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_web__contents_web__contents__view__aura.cc
new file mode 100644
index 000000000000..349d61e5c203
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_web__contents_web__contents__view__aura.cc
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/content/browser/web_contents/web_contents_view_aura.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/content/browser/web_contents/web_contents_view_aura.cc
+@@ -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/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_webui_shared__resources__data__source.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_webui_shared__resources__data__source.cc
index aaef1622e203..35a8075cf046 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_webui_shared__resources__data__source.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_webui_shared__resources__data__source.cc
@@ -1,17 +1,18 @@
---- src/3rdparty/chromium/content/browser/webui/shared_resources_data_source.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/content/browser/webui/shared_resources_data_source.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/browser/webui/shared_resources_data_source.cc
-@@ -131,12 +131,12 @@ const std::map<int, std::string> CreateMojoResourceIdT
+@@ -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_MACOSX) || defined(OS_LINUX)
-+#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || 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) || 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_MACOSX) || defined(OS_LINUX)
-+#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+-#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/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_zygote_host_zygote__host__impl__linux.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_zygote__host_zygote__host__impl__linux.cc
similarity index 57%
rename from www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_zygote_host_zygote__host__impl__linux.cc
rename to www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_zygote__host_zygote__host__impl__linux.cc
index 07e46cdc1c91..54cd42a7d7b7 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_zygote_host_zygote__host__impl__linux.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_zygote__host_zygote__host__impl__linux.cc
@@ -1,40 +1,40 @@
---- src/3rdparty/chromium/services/service_manager/zygote/host/zygote_host_impl_linux.cc.orig	2018-11-13 18:25:11 UTC
-+++ src/3rdparty/chromium/services/service_manager/zygote/host/zygote_host_impl_linux.cc
-@@ -72,6 +72,7 @@ ZygoteHostImpl* ZygoteHostImpl::GetInstance() {
+--- src/3rdparty/chromium/content/browser/zygote_host/zygote_host_impl_linux.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/content/browser/zygote_host/zygote_host_impl_linux.cc
+@@ -73,6 +73,7 @@ void ZygoteHostImpl::Init(const base::CommandLine& com
  }
  
  void ZygoteHostImpl::Init(const base::CommandLine& command_line) {
 +#if !defined(OS_BSD)
-   if (command_line.HasSwitch(service_manager::switches::kNoSandbox)) {
+   if (command_line.HasSwitch(sandbox::policy::switches::kNoSandbox)) {
      return;
    }
-@@ -122,6 +123,7 @@ void ZygoteHostImpl::Init(const base::CommandLine& com
+@@ -123,6 +124,7 @@ void ZygoteHostImpl::Init(const base::CommandLine& com
             "you can try using --"
-         << service_manager::switches::kNoSandbox << ".";
+         << sandbox::policy::switches::kNoSandbox << ".";
    }
 +#endif
  }
  
  void ZygoteHostImpl::AddZygotePid(pid_t pid) {
-@@ -146,6 +148,7 @@ pid_t ZygoteHostImpl::LaunchZygote(
+@@ -147,6 +149,9 @@ pid_t ZygoteHostImpl::LaunchZygote(
      base::CommandLine* cmd_line,
      base::ScopedFD* control_fd,
      base::FileHandleMappingVector additional_remapped_fds) {
-+#if !defined(OS_BSD)
++#if defined(OS_BSD)
++  NOTIMPLEMENTED();
++#else
    int fds[2];
    CHECK_EQ(0, socketpair(AF_UNIX, SOCK_SEQPACKET, 0, fds));
    CHECK(base::UnixDomainSocket::EnableReceiveProcessId(fds[0]));
-@@ -210,9 +213,12 @@ pid_t ZygoteHostImpl::LaunchZygote(
+@@ -214,9 +219,10 @@ pid_t ZygoteHostImpl::LaunchZygote(
  
    AddZygotePid(pid);
    return pid;
-+#else
-+  return 0;
 +#endif
  }
  
 -#if !defined(OS_OPENBSD)
 +#if !defined(OS_BSD)
  void ZygoteHostImpl::AdjustRendererOOMScore(base::ProcessHandle pid,
                                              int score) {
    // 1) You can't change the oom_score_adj of a non-dumpable process
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_zygote_host_zygote__host__impl__linux.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_zygote__host_zygote__host__impl__linux.h
similarity index 55%
rename from www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_zygote_host_zygote__host__impl__linux.h
rename to www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_zygote__host_zygote__host__impl__linux.h
index e3a233def28b..e30c9659dd18 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_zygote_host_zygote__host__impl__linux.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_zygote__host_zygote__host__impl__linux.h
@@ -1,13 +1,13 @@
---- src/3rdparty/chromium/services/service_manager/zygote/host/zygote_host_impl_linux.h.orig	2019-05-23 12:39:34 UTC
-+++ src/3rdparty/chromium/services/service_manager/zygote/host/zygote_host_impl_linux.h
-@@ -44,8 +44,10 @@ class COMPONENT_EXPORT(SERVICE_MANAGER_ZYGOTE) ZygoteH
+--- src/3rdparty/chromium/content/browser/zygote_host/zygote_host_impl_linux.h.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/content/browser/zygote_host/zygote_host_impl_linux.h
+@@ -42,8 +42,10 @@ class CONTENT_EXPORT ZygoteHostImpl : public ZygoteHos
                       base::ScopedFD* control_fd,
                       base::FileHandleMappingVector additional_remapped_fds);
  
 +#if !defined(OS_BSD)
    void AdjustRendererOOMScore(base::ProcessHandle process_handle,
                                int score) override;
 +#endif
    bool HasZygote() { return !zygote_pids_.empty(); }
  
   private:
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_child_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_child_BUILD.gn
deleted file mode 100644
index c60bf9cbf4a0..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_child_BUILD.gn
+++ /dev/null
@@ -1,16 +0,0 @@
---- src/3rdparty/chromium/content/child/BUILD.gn.orig	2020-11-07 01:22:36 UTC
-+++ src/3rdparty/chromium/content/child/BUILD.gn
-@@ -147,8 +147,12 @@ target(link_target_type, "child") {
-     deps += [
-       "//components/services/font/public/cpp",
-       "//components/services/font/public/mojom",
--      "//services/service_manager/zygote",
-     ]
-+    if (!is_bsd) {
-+      deps += [
-+        "//services/service_manager/zygote",
-+      ]
-+    }
-   }
- 
-   if (is_win) {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_child_child__process.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_child_child__process.cc
new file mode 100644
index 000000000000..3a6b4eed3aab
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_child_child__process.cc
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/content/child/child_process.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/content/child/child_process.cc
+@@ -50,7 +50,7 @@ ChildProcess::ChildProcess(base::ThreadPriority io_thr
+   DCHECK(!g_lazy_child_process_tls.Pointer()->Get());
+   g_lazy_child_process_tls.Pointer()->Set(this);
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   const base::CommandLine& command_line =
+       *base::CommandLine::ForCurrentProcess();
+   if (IsMojoCoreSharedLibraryEnabled()) {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_common_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_common_BUILD.gn
index 1b50454bb41d..c3ce17b7e5e5 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_common_BUILD.gn
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_common_BUILD.gn
@@ -1,15 +1,27 @@
---- src/3rdparty/chromium/content/common/BUILD.gn.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/content/common/BUILD.gn.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/common/BUILD.gn
-@@ -414,6 +414,12 @@ source_set("common") {
+@@ -329,6 +329,15 @@ static_library("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
+@@ -355,7 +364,7 @@ static_library("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/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_common_mojo__core__library__support.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_common_mojo__core__library__support.cc
new file mode 100644
index 000000000000..39d492af3363
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_common_mojo__core__library__support.cc
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/content/common/mojo_core_library_support.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/content/common/mojo_core_library_support.cc
+@@ -15,7 +15,7 @@ base::Optional<base::FilePath> GetMojoCoreSharedLibrar
+ }
+ 
+ base::Optional<base::FilePath> GetMojoCoreSharedLibraryPath() {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   const base::CommandLine& command_line =
+       *base::CommandLine::ForCurrentProcess();
+   if (!command_line.HasSwitch(switches::kMojoCoreLibraryPath))
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_common_user__agent.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_common_user__agent.cc
index 5912a4fc19da..b351e08afd79 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_common_user__agent.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_common_user__agent.cc
@@ -1,17 +1,17 @@
---- src/3rdparty/chromium/content/common/user_agent.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/content/common/user_agent.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/common/user_agent.cc
-@@ -125,6 +125,14 @@ std::string BuildOSCpuInfo() {
+@@ -214,6 +214,14 @@ std::string BuildOSCpuInfoFromOSVersionAndCpuType(cons
+   );
  #endif
-   );  // NOLINT
  
 +#if defined(OS_BSD)
 +#if defined(__x86_64__)
 +  base::StringAppendF(&os_cpu, "; Linux x86_64");
 +#else
 +  base::StringAppendF(&os_cpu, "; Linux i686");
 +#endif
 +#endif
 +
    return os_cpu;
  }
  
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_gpu_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_gpu_BUILD.gn
deleted file mode 100644
index 2281d7279d42..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_gpu_BUILD.gn
+++ /dev/null
@@ -1,20 +0,0 @@
---- src/3rdparty/chromium/content/gpu/BUILD.gn.orig	2020-11-07 01:22:36 UTC
-+++ src/3rdparty/chromium/content/gpu/BUILD.gn
-@@ -96,7 +96,7 @@ target(link_target_type, "gpu_sources") {
-     ]
-   }
- 
--  if (is_linux) {
-+  if (is_linux && !is_bsd) {
-     deps += [ "//services/service_manager/zygote" ]
-   }
- 
-@@ -130,7 +130,7 @@ target(link_target_type, "gpu_sources") {
- 
-   # Use DRI on desktop Linux builds.
-   if (current_cpu != "s390x" && current_cpu != "ppc64" && is_desktop_linux &&
--      (!is_chromecast || is_cast_desktop_build) && !use_qt) {
-+      (!is_chromecast || is_cast_desktop_build) && !use_qt && !is_bsd) {
-     configs += [ "//build/config/linux/dri" ]
-   }
- }
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_gpu_gpu__main.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_gpu_gpu__main.cc
index e033dd27625d..dde8e79eca09 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_gpu_gpu__main.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_gpu_gpu__main.cc
@@ -1,56 +1,20 @@
---- src/3rdparty/chromium/content/gpu/gpu_main.cc.orig	2020-03-16 14:04:24 UTC
+--- src/3rdparty/chromium/content/gpu/gpu_main.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/gpu/gpu_main.cc
-@@ -85,7 +85,7 @@
- #include "ui/gfx/x/x11_switches.h"    // nogncheck
+@@ -86,7 +86,7 @@
+ #include "ui/gfx/x/x11_types.h"                          // nogncheck
  #endif
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include "content/gpu/gpu_sandbox_hook_linux.h"
  #include "content/public/common/sandbox_init.h"
- #include "services/service_manager/sandbox/linux/sandbox_linux.h"
-@@ -106,7 +106,7 @@ namespace content {
- 
- namespace {
- 
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) && !defined(OS_BSD)
- bool StartSandboxLinux(gpu::GpuWatchdogThread*,
-                        const gpu::GPUInfo*,
-                        const gpu::GpuPreferences&);
-@@ -167,7 +167,7 @@ class ContentSandboxHelper : public gpu::GpuSandboxHel
-   bool EnsureSandboxInitialized(gpu::GpuWatchdogThread* watchdog_thread,
-                                 const gpu::GPUInfo* gpu_info,
-                                 const gpu::GpuPreferences& gpu_prefs) override {
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) && !defined(OS_BSD)
-     return StartSandboxLinux(watchdog_thread, gpu_info, gpu_prefs);
- #elif defined(OS_WIN)
-     return StartSandboxWindows(sandbox_info_);
-@@ -273,7 +273,7 @@ int GpuMain(const MainFunctionParams& parameters) {
-     main_thread_task_executor =
-         std::make_unique<base::SingleThreadTaskExecutor>(
-             gpu_preferences.message_pump_type);
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "sandbox/policy/linux/sandbox_linux.h"
+@@ -274,7 +274,7 @@ int GpuMain(const MainFunctionParams& parameters) {
+               gpu_preferences.message_pump_type);
+     }
+ #endif
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #error "Unsupported Linux platform."
- #elif defined(OS_MACOSX)
+ #elif defined(OS_MAC)
      // Cross-process CoreAnimation requires a CFRunLoop to function at all, and
-@@ -379,7 +379,7 @@ int GpuMain(const MainFunctionParams& parameters) {
- 
- namespace {
- 
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) && !defined(OS_BSD)
- bool StartSandboxLinux(gpu::GpuWatchdogThread* watchdog_thread,
-                        const gpu::GPUInfo* gpu_info,
-                        const gpu::GpuPreferences& gpu_prefs) {
-@@ -414,7 +414,7 @@ bool StartSandboxLinux(gpu::GpuWatchdogThread* watchdo
- 
-   return res;
- }
--#endif  // defined(OS_LINUX)
-+#endif  // defined(OS_LINUX) && !defined(OS_BSD)
- 
- #if defined(OS_WIN)
- bool StartSandboxWindows(const sandbox::SandboxInterfaceInfo* sandbox_info) {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_gpu_gpu__sandbox__hook__linux.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_gpu_gpu__sandbox__hook__linux.cc
index 924727ed53ae..7b6a4d0fa07d 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_gpu_gpu__sandbox__hook__linux.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_gpu_gpu__sandbox__hook__linux.cc
@@ -1,58 +1,57 @@
---- src/3rdparty/chromium/content/gpu/gpu_sandbox_hook_linux.cc.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/content/gpu/gpu_sandbox_hook_linux.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/gpu/gpu_sandbox_hook_linux.cc
-@@ -95,8 +95,9 @@ static const char kLibV4lEncPluginPath[] =
-     "/usr/lib/libv4l/plugins/libv4l-encplugin.so";
- #endif
+@@ -100,6 +100,7 @@ constexpr int dlopen_flag = RTLD_NOW | RTLD_GLOBAL | R
  
--constexpr int dlopen_flag = RTLD_NOW | RTLD_GLOBAL | RTLD_NODELETE;
-+constexpr int dlopen_flag = RTLD_NOW | RTLD_GLOBAL;
+ constexpr int dlopen_flag = RTLD_NOW | RTLD_GLOBAL | RTLD_NODELETE;
  
 +#if !defined(OS_BSD)
- void AddV4L2GpuWhitelist(
+ void AddV4L2GpuPermissions(
      std::vector<BrokerFilePermission>* permissions,
-     const service_manager::SandboxSeccompBPF::Options& options) {
-@@ -277,8 +278,10 @@ std::vector<BrokerFilePermission> FilePermissionsForGp
-   AddStandardGpuWhiteList(&permissions);
+     const sandbox::policy::SandboxSeccompBPF::Options& options) {
+@@ -359,8 +360,10 @@ std::vector<BrokerFilePermission> FilePermissionsForGp
+   AddStandardGpuPermissions(&permissions);
    return permissions;
  }
 +#endif
  
  void LoadArmGpuLibraries() {
 +#if !defined(OS_BSD)
    // Preload the Mali library.
-   if (UseChromecastSandboxWhitelist()) {
-     for (const char* path : kWhitelistedChromecastPaths) {
-@@ -293,6 +296,7 @@ void LoadArmGpuLibraries() {
+   if (UseChromecastSandboxAllowlist()) {
+     for (const char* path : kAllowedChromecastPaths) {
+@@ -375,6 +378,7 @@ void LoadArmGpuLibraries() {
      // Preload the Tegra V4L2 (video decode acceleration) library.
      dlopen(kLibTegraPath, dlopen_flag);
    }
 +#endif
  }
  
  bool LoadAmdGpuLibraries() {
-@@ -348,6 +352,7 @@ bool LoadLibrariesForGpu(
-   return true;
+@@ -414,12 +418,14 @@ void LoadChromecastV4L2Libraries() {
  }
  
+ void LoadChromecastV4L2Libraries() {
 +#if !defined(OS_BSD)
- sandbox::syscall_broker::BrokerCommandSet CommandSetForGPU(
-     const service_manager::SandboxLinux::Options& options) {
-   sandbox::syscall_broker::BrokerCommandSet command_set;
-@@ -368,13 +373,17 @@ bool BrokerProcessPreSandboxHook(
-   service_manager::SetProcessTitleFromCommandLine(nullptr);
-   return true;
- }
+   for (const char* path : kAllowedChromecastPaths) {
+     const std::string library_path(std::string(path) +
+                                    std::string("libvpcodec.so"));
+     if (dlopen(library_path.c_str(), dlopen_flag))
+       break;
+   }
 +#endif
+ }
  
+ bool LoadLibrariesForGpu(
+@@ -466,9 +472,12 @@ bool GpuProcessPreSandboxHook(sandbox::policy::Sandbox
  }  // namespace
  
- bool GpuProcessPreSandboxHook(service_manager::SandboxLinux::Options options) {
+ bool GpuProcessPreSandboxHook(sandbox::policy::SandboxLinux::Options options) {
 +  NOTIMPLEMENTED();
 +#if !defined(OS_BSD)
-   service_manager::SandboxLinux::GetInstance()->StartBrokerProcess(
+   sandbox::policy::SandboxLinux::GetInstance()->StartBrokerProcess(
        CommandSetForGPU(options), FilePermissionsForGpu(options),
        base::BindOnce(BrokerProcessPreSandboxHook), options);
 +#endif
  
    if (!LoadLibrariesForGpu(options))
      return false;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_ppapi__plugin_ppapi__blink__platform__impl.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_ppapi__plugin_ppapi__blink__platform__impl.cc
index aaf54946fa06..a6b9c767e270 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_ppapi__plugin_ppapi__blink__platform__impl.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_ppapi__plugin_ppapi__blink__platform__impl.cc
@@ -1,29 +1,29 @@
---- src/3rdparty/chromium/content/ppapi_plugin/ppapi_blink_platform_impl.cc.orig	2020-04-08 09:41:36 UTC
+--- src/3rdparty/chromium/content/ppapi_plugin/ppapi_blink_platform_impl.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/ppapi_plugin/ppapi_blink_platform_impl.cc
 @@ -19,7 +19,7 @@
  
- #if defined(OS_MACOSX)
+ #if defined(OS_MAC)
  #include "content/child/child_process_sandbox_support_impl_mac.h"
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include "content/child/child_process_sandbox_support_impl_linux.h"
  #include "mojo/public/cpp/bindings/pending_remote.h"
  #endif
-@@ -34,7 +34,7 @@ typedef struct CGFont* CGFontRef;
+@@ -34,7 +34,7 @@ PpapiBlinkPlatformImpl::PpapiBlinkPlatformImpl() {
  namespace content {
  
  PpapiBlinkPlatformImpl::PpapiBlinkPlatformImpl() {
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    mojo::PendingRemote<font_service::mojom::FontService> font_service;
    ChildThread::Get()->BindHostReceiver(
        font_service.InitWithNewPipeAndPassReceiver());
-@@ -52,7 +52,7 @@ PpapiBlinkPlatformImpl::~PpapiBlinkPlatformImpl() {
+@@ -52,7 +52,7 @@ blink::WebSandboxSupport* PpapiBlinkPlatformImpl::GetS
  void PpapiBlinkPlatformImpl::Shutdown() {}
  
  blink::WebSandboxSupport* PpapiBlinkPlatformImpl::GetSandboxSupport() {
--#if defined(OS_LINUX) || defined(OS_MACOSX)
-+#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
    return sandbox_support_.get();
  #else
    return nullptr;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_ppapi__plugin_ppapi__blink__platform__impl.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_ppapi__plugin_ppapi__blink__platform__impl.h
index e3fb3ef01fe3..fafa5543c725 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_ppapi__plugin_ppapi__blink__platform__impl.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_ppapi__plugin_ppapi__blink__platform__impl.h
@@ -1,25 +1,25 @@
---- src/3rdparty/chromium/content/ppapi_plugin/ppapi_blink_platform_impl.h.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/content/ppapi_plugin/ppapi_blink_platform_impl.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/ppapi_plugin/ppapi_blink_platform_impl.h
 @@ -13,7 +13,7 @@
  #include "build/build_config.h"
  #include "content/child/blink_platform_impl.h"
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include "components/services/font/public/cpp/font_loader.h"
  #include "third_party/skia/include/core/SkRefCnt.h"
  #endif
-@@ -42,11 +42,11 @@ class PpapiBlinkPlatformImpl : public BlinkPlatformImp
-                          bool sync_dir) override;
+@@ -36,11 +36,11 @@ class PpapiBlinkPlatformImpl : public BlinkPlatformImp
+   blink::WebThemeEngine* ThemeEngine() override;
  
   private:
--#if defined(OS_LINUX) || defined(OS_MACOSX)
-+#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
    std::unique_ptr<blink::WebSandboxSupport> sandbox_support_;
  #endif
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    sk_sp<font_service::FontLoader> font_loader_;
  #endif
  
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_app_content__main__delegate.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_app_content__main__delegate.cc
index 3c159529cf40..affdf641a0d7 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_app_content__main__delegate.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_app_content__main__delegate.cc
@@ -1,18 +1,17 @@
---- src/3rdparty/chromium/content/public/app/content_main_delegate.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/content/public/app/content_main_delegate.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/public/app/content_main_delegate.cc
-@@ -27,13 +27,13 @@ int ContentMainDelegate::RunProcess(
+@@ -24,12 +24,12 @@ int ContentMainDelegate::RunProcess(
    return -1;
  }
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
  void ContentMainDelegate::ZygoteStarting(
-     std::vector<std::unique_ptr<service_manager::ZygoteForkDelegate>>*
-         delegates) {}
+     std::vector<std::unique_ptr<ZygoteForkDelegate>>* delegates) {}
  
--#endif  // defined(OS_LINUX)
-+#endif  // defined(OS_LINUX) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
  int ContentMainDelegate::TerminateForFatalInitializationError() {
    CHECK(false);
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_app_content__main__delegate.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_app_content__main__delegate.h
index d8a24d56661b..220911f301fc 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_app_content__main__delegate.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_app_content__main__delegate.h
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/content/public/app/content_main_delegate.h.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/content/public/app/content_main_delegate.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/public/app/content_main_delegate.h
-@@ -60,7 +60,7 @@ class CONTENT_EXPORT ContentMainDelegate {
+@@ -49,7 +49,7 @@ class CONTENT_EXPORT ContentMainDelegate {
    // Called right before the process exits.
    virtual void ProcessExiting(const std::string& process_type) {}
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    // Tells the embedder that the zygote process is starting, and allows it to
    // specify one or more zygote delegates if it wishes by storing them in
    // |*delegates|.
-@@ -70,7 +70,7 @@ class CONTENT_EXPORT ContentMainDelegate {
+@@ -58,7 +58,7 @@ class CONTENT_EXPORT ContentMainDelegate {
  
    // Called every time the zygote process forks.
    virtual void ZygoteForked() {}
--#endif  // defined(OS_LINUX)
-+#endif  // defined(OS_LINUX) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
    // Fatal errors during initialization are reported by this function, so that
    // the embedder can implement graceful exit by displaying some message and
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_zygote_zygote__host__linux.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_browser_zygote__host_zygote__host__linux.h
similarity index 61%
rename from www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_zygote_zygote__host__linux.h
rename to www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_browser_zygote__host_zygote__host__linux.h
index 22ac58a31a3b..380b5967e2b3 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_zygote_zygote__host__linux.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_browser_zygote__host_zygote__host__linux.h
@@ -1,16 +1,16 @@
---- src/3rdparty/chromium/services/service_manager/zygote/zygote_host_linux.h.orig	2018-11-13 18:25:11 UTC
-+++ src/3rdparty/chromium/services/service_manager/zygote/zygote_host_linux.h
+--- src/3rdparty/chromium/content/public/browser/zygote_host/zygote_host_linux.h.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/content/public/browser/zygote_host/zygote_host_linux.h
 @@ -30,11 +30,13 @@ class ZygoteHost {
    // after the first render has been forked.
-   virtual int GetRendererSandboxStatus() const = 0;
+   virtual int GetRendererSandboxStatus() = 0;
  
 +#if !defined(OS_BSD)
    // Adjust the OOM score of the given renderer's PID.  The allowed
    // range for the score is [0, 1000], where higher values are more
    // likely to be killed by the OOM killer.
    virtual void AdjustRendererOOMScore(base::ProcessHandle process_handle,
                                        int score) = 0;
 +#endif
  };
  
- }  // namespace service_manager
+ }  // namespace content
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_BUILD.gn
deleted file mode 100644
index 92b2ffd34d7b..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_BUILD.gn
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/3rdparty/chromium/content/public/common/BUILD.gn.orig	2020-11-07 01:22:36 UTC
-+++ src/3rdparty/chromium/content/public/common/BUILD.gn
-@@ -254,7 +254,7 @@ jumbo_source_set("common_sources") {
-     deps += [ "//content/public/android:jni" ]
-   }
- 
--  if (is_linux) {
-+  if (is_linux && !is_bsd) {
-     deps += [ "//services/service_manager/zygote" ]
-   }
- 
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_child__process__host.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_child__process__host.h
index 4e21f8dbb7ec..702eb9981322 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_child__process__host.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_child__process__host.h
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/content/public/common/child_process_host.h.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/content/public/common/child_process_host.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/public/common/child_process_host.h
-@@ -51,7 +51,7 @@ class CONTENT_EXPORT ChildProcessHost : public IPC::Se
+@@ -81,7 +81,7 @@ class CONTENT_EXPORT ChildProcessHost : public IPC::Se
      // No special behavior requested.
      CHILD_NORMAL = 0,
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
      // Indicates that the child execed after forking may be execced from
      // /proc/self/exe rather than using the "real" app path. This prevents
      // autoupdate from confusing us if it changes the file out from under us.
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_common__param__traits__macros.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_common__param__traits__macros.h
index c35c92d4478f..ca91f1884ac0 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_common__param__traits__macros.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_common__param__traits__macros.h
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/content/public/common/common_param_traits_macros.h.orig	2020-04-08 09:41:36 UTC
+--- src/3rdparty/chromium/content/public/common/common_param_traits_macros.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/public/common/common_param_traits_macros.h
-@@ -333,7 +333,7 @@ IPC_STRUCT_TRAITS_BEGIN(blink::mojom::RendererPreferen
+@@ -138,7 +138,7 @@ IPC_STRUCT_TRAITS_BEGIN(blink::mojom::RendererPreferen
    IPC_STRUCT_TRAITS_MEMBER(accept_languages)
-   IPC_STRUCT_TRAITS_MEMBER(disable_client_blocked_error_page)
    IPC_STRUCT_TRAITS_MEMBER(plugin_fullscreen_allowed)
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+   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/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_content__constants.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_content__constants.cc
index c27b7e8e88f0..574d1cc48707 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_content__constants.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_content__constants.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/content/public/common/content_constants.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/content/public/common/content_constants.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/public/common/content_constants.cc
-@@ -46,7 +46,7 @@ const int kDefaultDetachableCancelDelayMs = 30000;
- const char kCorsExemptPurposeHeaderName[] = "Purpose";
- const char kCorsExemptRequestedWithHeaderName[] = "X-Requested-With";
+@@ -56,7 +56,7 @@ std::string GetCorsExemptRequestedWithHeaderName() {
+   return base::JoinString(pieces, "-");
+ }
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  const int kLowestRendererOomScore = 300;
  const int kHighestRendererOomScore = 1000;
  
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_content__constants.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_content__constants.h
index 3bc59f512be4..1e4e4ef25177 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_content__constants.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_content__constants.h
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/content/public/common/content_constants.h.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/content/public/common/content_constants.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/public/common/content_constants.h
-@@ -65,7 +65,7 @@ CONTENT_EXPORT extern const int kDefaultDetachableCanc
- CONTENT_EXPORT extern const char kCorsExemptPurposeHeaderName[];
- CONTENT_EXPORT extern const char kCorsExemptRequestedWithHeaderName[];
+@@ -70,7 +70,7 @@ CONTENT_EXPORT std::string GetCorsExemptRequestedWithH
+ // it at run time.
+ CONTENT_EXPORT std::string GetCorsExemptRequestedWithHeaderName();
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  // The OOM score adj constants
  // The highest and lowest assigned OOM score adjustment (oom_score_adj) for
  // renderers and extensions used by the OomPriority Manager.
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_content__features.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_content__features.cc
index 00e26170dfdf..0a20c5933ee3 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_content__features.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_content__features.cc
@@ -1,29 +1,31 @@
---- src/3rdparty/chromium/content/public/common/content_features.cc.orig	2020-03-16 14:04:24 UTC
+--- src/3rdparty/chromium/content/public/common/content_features.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/public/common/content_features.cc
-@@ -54,7 +54,7 @@ const base::Feature kAudioServiceLaunchOnStartup{
- const base::Feature kAudioServiceOutOfProcess{
+@@ -55,7 +55,7 @@ const base::Feature kAudioServiceOutOfProcess {
+ const base::Feature kAudioServiceOutOfProcess {
    "AudioServiceOutOfProcess",
- #if defined(OS_WIN) || defined(OS_MACOSX) || \
+ #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
-@@ -634,7 +634,7 @@ const base::Feature kWebAssemblyThreads {
+@@ -787,8 +787,8 @@ const base::Feature kWebAssemblyThreads {
  };
  
  // Enable WebAssembly trap handler.
--#if (defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MACOSX)) && \
-+#if (defined(OS_BSD) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MACOSX)) && \
+-#if (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN) || \
+-     defined(OS_MAC)) &&                                             \
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN) || defined(OS_BSD) || \
++     defined(OS_MAC)) &&                                                                \
      defined(ARCH_CPU_X86_64)
  const base::Feature kWebAssemblyTrapHandler{"WebAssemblyTrapHandler",
                                              base::FEATURE_ENABLED_BY_DEFAULT};
-@@ -669,7 +669,7 @@ const base::Feature kWebAuthBle{"WebAuthenticationBle"
+@@ -818,7 +818,7 @@ const base::Feature kWebAuthCable {
  // https://w3c.github.io/webauthn
  const base::Feature kWebAuthCable {
    "WebAuthenticationCable",
 -#if !defined(OS_CHROMEOS) && defined(OS_LINUX)
 +#if (!defined(OS_CHROMEOS) && defined(OS_LINUX)) || defined(OS_BSD)
        base::FEATURE_DISABLED_BY_DEFAULT
  #else
        base::FEATURE_ENABLED_BY_DEFAULT
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_content__switches.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_content__switches.cc
index 9800bc96ba0c..0eed30bc02a1 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_content__switches.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_content__switches.cc
@@ -1,11 +1,20 @@
---- src/3rdparty/chromium/content/public/common/content_switches.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/content/public/common/content_switches.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/public/common/content_switches.cc
-@@ -978,7 +978,7 @@ const char kDisableAudioSupportForDesktopShare[] =
- const char kDisablePanelFitting[]           = "disable-panel-fitting";
+@@ -907,7 +907,7 @@ const char kDisableAcceleratedVideoDecode[] =
+ 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
+@@ -971,7 +971,7 @@ const char kEnableAutomation[] = "enable-automation";
+ // 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/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_content__switches.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_content__switches.h
index 1dc251a70fd1..3cb48491a0b4 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_content__switches.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_content__switches.h
@@ -1,11 +1,20 @@
---- src/3rdparty/chromium/content/public/common/content_switches.h.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/content/public/common/content_switches.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/public/common/content_switches.h
-@@ -277,7 +277,7 @@ CONTENT_EXPORT extern const char kEnableOSKOverscroll[
- CONTENT_EXPORT extern const char kDisablePanelFitting[];
+@@ -254,7 +254,7 @@ CONTENT_EXPORT extern const char kWebXrRuntimeWMR[];
+ 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[];
+@@ -275,7 +275,7 @@ CONTENT_EXPORT extern const char kRendererWaitForJavaD
+ 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/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_use__zoom__for__dsf__policy.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_use__zoom__for__dsf__policy.cc
index 0d09edabc835..b4270f6d81a9 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_use__zoom__for__dsf__policy.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_use__zoom__for__dsf__policy.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/content/public/common/use_zoom_for_dsf_policy.cc.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/content/public/common/use_zoom_for_dsf_policy.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/public/common/use_zoom_for_dsf_policy.cc
-@@ -25,7 +25,7 @@ const base::Feature kUseZoomForDsfEnabledByDefault{
+@@ -25,7 +25,7 @@ bool IsUseZoomForDSFEnabledByDefault() {
  #endif
  
  bool IsUseZoomForDSFEnabledByDefault() {
--#if defined(OS_LINUX) || defined(OS_FUCHSIA)
-+#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
    return true;
  #elif defined(OS_WIN) || defined(OS_ANDROID)
    return base::FeatureList::IsEnabled(kUseZoomForDsfEnabledByDefault);
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_zygote_common_zygote__features.gni b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_zygote_features.gni
similarity index 55%
rename from www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_zygote_common_zygote__features.gni
rename to www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_zygote_features.gni
index 7147022ea159..74ea2fcea5ef 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_zygote_common_zygote__features.gni
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_public_common_zygote_features.gni
@@ -1,8 +1,8 @@
---- src/3rdparty/chromium/services/service_manager/zygote/common/zygote_features.gni.orig	2018-11-13 18:25:11 UTC
-+++ src/3rdparty/chromium/services/service_manager/zygote/common/zygote_features.gni
+--- src/3rdparty/chromium/content/public/common/zygote/features.gni.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/content/public/common/zygote/features.gni
 @@ -2,4 +2,4 @@
  # Use of this source code is governed by a BSD-style license that can be
  # found in the LICENSE file.
  
 -use_zygote_handle = is_posix && !is_android && !is_mac
 +use_zygote_handle = is_posix && !is_android && !is_mac && !is_bsd
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_renderer_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_renderer_BUILD.gn
deleted file mode 100644
index 662a6e733b35..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_renderer_BUILD.gn
+++ /dev/null
@@ -1,18 +0,0 @@
---- src/3rdparty/chromium/content/renderer/BUILD.gn.orig	2020-11-07 01:22:36 UTC
-+++ src/3rdparty/chromium/content/renderer/BUILD.gn
-@@ -462,10 +462,11 @@ target(link_target_type, "renderer") {
-   }
- 
-   if (is_linux) {
--    deps += [
--      "//components/services/font/public/cpp",
--      "//services/service_manager/zygote",
--    ]
-+    deps += [ "//components/services/font/public/cpp" ]
-+
-+    if (!is_bsd) {
-+      deps += [ "//services/service_manager/zygote" ]
-+    }
-   }
- 
-   if (is_mac) {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_renderer_render__process__impl.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_renderer_render__process__impl.cc
index 1f5e385509d8..2222245d83da 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_renderer_render__process__impl.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_renderer_render__process__impl.cc
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/content/renderer/render_process_impl.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/content/renderer/render_process_impl.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/renderer/render_process_impl.cc
-@@ -43,7 +43,7 @@
+@@ -44,7 +44,7 @@
  #if defined(OS_WIN)
  #include "base/win/win_util.h"
  #endif
--#if defined(OS_LINUX) && defined(ARCH_CPU_X86_64)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && defined(ARCH_CPU_X86_64)
+-#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(ARCH_CPU_X86_64)
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && defined(ARCH_CPU_X86_64)
  #include "v8/include/v8-wasm-trap-handler-posix.h"
  #endif
  namespace {
-@@ -156,7 +156,7 @@ RenderProcessImpl::RenderProcessImpl()
+@@ -177,7 +177,7 @@ RenderProcessImpl::RenderProcessImpl()
  
    SetV8FlagIfNotFeature(features::kWebAssemblyTrapHandler,
                          "--no-wasm-trap-handler");
--#if defined(OS_LINUX) && defined(ARCH_CPU_X86_64)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && defined(ARCH_CPU_X86_64)
+-#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(ARCH_CPU_X86_64)
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && defined(ARCH_CPU_X86_64)
    if (base::FeatureList::IsEnabled(features::kWebAssemblyTrapHandler)) {
      base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
-     if (!command_line->HasSwitch(
+     if (!command_line->HasSwitch(switches::kDisableInProcessStackTraces)) {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_renderer_render__thread__impl.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_renderer_render__thread__impl.cc
index 29655c421212..a4fda898d4eb 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_renderer_render__thread__impl.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_renderer_render__thread__impl.cc
@@ -1,51 +1,11 @@
---- src/3rdparty/chromium/content/renderer/render_thread_impl.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/content/renderer/render_thread_impl.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/renderer/render_thread_impl.cc
-@@ -176,12 +176,21 @@
- #include "mojo/public/cpp/bindings/message_dumper.h"
- #endif
+@@ -173,7 +173,7 @@
  
-+#if !defined(OS_BSD)
- #if defined(OS_MACOSX)
+ #if defined(OS_MAC)
  #include <malloc/malloc.h>
- #else
+-#else
++#elif !defined(OS_BSD)
  #include <malloc.h>
  #endif
-+#endif
- 
-+#if defined(OS_BSD)
-+#include <stddef.h>
-+#include <stdint.h>
-+#include <sys/param.h>
-+#include <sys/sysctl.h>
-+#endif
-+
- using base::ThreadRestrictions;
- using blink::WebDocument;
- using blink::WebFrame;
-@@ -739,7 +748,7 @@ void RenderThreadImpl::Init() {
-   DCHECK(parsed_num_raster_threads) << string_value;
-   DCHECK_GT(num_raster_threads, 0);
- 
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
-   categorized_worker_pool_->SetBackgroundingCallback(
-       main_thread_scheduler_->DefaultTaskRunner(),
-       base::BindOnce(
-@@ -762,7 +771,7 @@ void RenderThreadImpl::Init() {
-   base::DiscardableMemoryAllocator::SetInstance(
-       discardable_memory_allocator_.get());
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
-   if (base::FeatureList::IsEnabled(
-           blink::features::kBlinkCompositorUseDisplayThreadPriority)) {
-     render_message_filter()->SetThreadPriority(
-@@ -1148,7 +1157,7 @@ media::GpuVideoAcceleratorFactories* RenderThreadImpl:
-       !cmd_line->HasSwitch(switches::kDisableGpuMemoryBufferVideoFrames);
- #else
-       cmd_line->HasSwitch(switches::kEnableGpuMemoryBufferVideoFrames);
--#endif  // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN)
-+#endif  // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
-   const bool enable_media_stream_gpu_memory_buffers =
-       enable_gpu_memory_buffers &&
-       base::FeatureList::IsEnabled(
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_renderer_renderer__blink__platform__impl.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_renderer_renderer__blink__platform__impl.cc
index 868fc376dfe8..eaf6a5aef6cd 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_renderer_renderer__blink__platform__impl.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_renderer_renderer__blink__platform__impl.cc
@@ -1,47 +1,47 @@
---- src/3rdparty/chromium/content/renderer/renderer_blink_platform_impl.cc.orig	2020-04-08 09:41:36 UTC
+--- src/3rdparty/chromium/content/renderer/renderer_blink_platform_impl.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/renderer/renderer_blink_platform_impl.cc
-@@ -99,7 +99,7 @@
+@@ -97,7 +97,7 @@
  
- #if defined(OS_MACOSX)
+ #if defined(OS_MAC)
  #include "content/child/child_process_sandbox_support_impl_mac.h"
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include "content/child/child_process_sandbox_support_impl_linux.h"
  #endif
  
-@@ -174,7 +174,7 @@ RendererBlinkPlatformImpl::RendererBlinkPlatformImpl(
+@@ -169,7 +169,7 @@ RendererBlinkPlatformImpl::RendererBlinkPlatformImpl(
+       main_thread_scheduler_(main_thread_scheduler) {
+   // RenderThread may not exist in some tests.
    if (RenderThreadImpl::current()) {
-     io_runner_ = RenderThreadImpl::current()->GetIOTaskRunner();
-     thread_safe_sender_ = RenderThreadImpl::current()->thread_safe_sender();
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
      mojo::PendingRemote<font_service::mojom::FontService> font_service;
      RenderThreadImpl::current()->BindHostReceiver(
          font_service.InitWithNewPipeAndPassReceiver());
-@@ -184,7 +184,7 @@ RendererBlinkPlatformImpl::RendererBlinkPlatformImpl(
+@@ -179,7 +179,7 @@ RendererBlinkPlatformImpl::RendererBlinkPlatformImpl(
  #endif
    }
  
--#if defined(OS_LINUX) || defined(OS_MACOSX)
-+#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
    if (sandboxEnabled()) {
- #if defined(OS_MACOSX)
+ #if defined(OS_MAC)
      sandbox_support_ = std::make_unique<WebSandboxSupportMac>();
-@@ -266,7 +266,7 @@ RendererBlinkPlatformImpl::CreateNetworkURLLoaderFacto
+@@ -232,7 +232,7 @@ void RendererBlinkPlatformImpl::SetDisplayThreadPriori
  
  void RendererBlinkPlatformImpl::SetDisplayThreadPriority(
      base::PlatformThreadId thread_id) {
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    if (RenderThreadImpl* render_thread = RenderThreadImpl::current()) {
      render_thread->render_message_filter()->SetThreadPriority(
          thread_id, base::ThreadPriority::DISPLAY);
-@@ -279,7 +279,7 @@ blink::BlameContext* RendererBlinkPlatformImpl::GetTop
+@@ -245,7 +245,7 @@ blink::WebSandboxSupport* RendererBlinkPlatformImpl::G
  }
  
  blink::WebSandboxSupport* RendererBlinkPlatformImpl::GetSandboxSupport() {
--#if defined(OS_LINUX) || defined(OS_MACOSX)
-+#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
    return sandbox_support_.get();
  #else
    // These platforms do not require sandbox support.
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_renderer_renderer__blink__platform__impl.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_renderer_renderer__blink__platform__impl.h
index 51de136951ec..d4a1fd47d773 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_renderer_renderer__blink__platform__impl.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_renderer_renderer__blink__platform__impl.h
@@ -1,29 +1,29 @@
---- src/3rdparty/chromium/content/renderer/renderer_blink_platform_impl.h.orig	2020-04-29 07:57:35 UTC
+--- src/3rdparty/chromium/content/renderer/renderer_blink_platform_impl.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/renderer/renderer_blink_platform_impl.h
-@@ -31,7 +31,7 @@
+@@ -30,7 +30,7 @@
  #include "third_party/blink/public/mojom/cache_storage/cache_storage.mojom.h"
  #include "third_party/blink/public/mojom/loader/code_cache.mojom.h"
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include "components/services/font/public/cpp/font_loader.h"  // nogncheck
  #include "third_party/skia/include/core/SkRefCnt.h"           // nogncheck
  #endif
-@@ -221,7 +221,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : publi
+@@ -224,7 +224,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : publi
+   // Return the mojo interface for making CodeCache calls.
+   blink::mojom::CodeCacheHost& GetCodeCacheHost();
  
-   scoped_refptr<base::SingleThreadTaskRunner> io_runner_;
- 
--#if defined(OS_LINUX) || defined(OS_MACOSX)
-+#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
    std::unique_ptr<blink::WebSandboxSupport> sandbox_support_;
  #endif
  
 @@ -245,7 +245,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : publi
    mojo::PendingRemote<blink::mojom::CodeCacheHost> code_cache_host_remote_;
    mojo::SharedRemote<blink::mojom::CodeCacheHost> code_cache_host_;
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    sk_sp<font_service::FontLoader> font_loader_;
  #endif
  
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_renderer_renderer__main__platform__delegate__linux.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_renderer_renderer__main__platform__delegate__linux.cc
index b1b240e7cfc8..245403ffed52 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_renderer_renderer__main__platform__delegate__linux.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_renderer_renderer__main__platform__delegate__linux.cc
@@ -1,19 +1,19 @@
---- src/3rdparty/chromium/content/renderer/renderer_main_platform_delegate_linux.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/content/renderer/renderer_main_platform_delegate_linux.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/renderer/renderer_main_platform_delegate_linux.cc
-@@ -30,6 +30,7 @@ void RendererMainPlatformDelegate::PlatformUninitializ
+@@ -30,6 +30,7 @@ bool RendererMainPlatformDelegate::EnableSandbox() {
  }
  
  bool RendererMainPlatformDelegate::EnableSandbox() {
 +#if !defined(OS_BSD)
    // The setuid sandbox is started in the zygote process: zygote_main_linux.cc
-   // https://chromium.googlesource.com/chromium/src/+/master/docs/linux_suid_sandbox.md
+   // https://chromium.googlesource.com/chromium/src/+/master/docs/linux/suid_sandbox.md
    //
 @@ -65,7 +66,7 @@ bool RendererMainPlatformDelegate::EnableSandbox() {
      CHECK_EQ(errno, EPERM);
    }
  #endif  // __x86_64__
 -
 +#endif  // ! OS_BSD
    return true;
  }
  
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_shell_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_shell_BUILD.gn
index 3f9e10e0762b..f8133ab31ba5 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_shell_BUILD.gn
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_shell_BUILD.gn
@@ -1,34 +1,47 @@
---- src/3rdparty/chromium/content/shell/BUILD.gn.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/content/shell/BUILD.gn.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/shell/BUILD.gn
-@@ -90,7 +90,7 @@ static_library("content_shell_app") {
-     "//content/public/app:both",
-     "//v8",
-   ]
+@@ -94,7 +94,7 @@ static_library("content_shell_app") {
+       "//content/web_test:web_test_renderer",
+     ]
+   }
 -  if (!is_fuchsia) {
 +  if (!is_fuchsia && !is_bsd) {
      deps += [
        "//components/crash/core/app",
        "//components/crash/core/app:test_support",
-@@ -366,6 +366,13 @@ static_library("content_shell_lib") {
-     ]
+@@ -253,7 +253,7 @@ static_library("content_shell_lib") {
+ 
+   if (is_fuchsia) {
      deps += [ "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.ui.policy" ]
-   }
-+  if (is_bsd) {
-+    deps -= [
-+      "//components/crash/content/browser",
-+      "//components/crash/core/app",
-+      "//components/crash/core/app:test_support",
-+    ]
-+  }
+-  } else {
++  } else if (!is_bsd) {
+     deps += [
+       "//components/crash/content/browser",
+       "//components/crash/core/app",
+@@ -505,7 +505,7 @@ if (is_android) {
+       }
+     }
  
-   # Annoyingly, this target and web_test_support have circular includes.
-   allow_circular_includes_from = [ "//content/test:web_test_support" ]
-@@ -959,7 +966,7 @@ group("content_shell_crash_test") {
+-    if (is_win || is_linux || is_chromeos) {
++    if ((is_win || is_linux || is_chromeos) && !is_bsd) {
+       data_deps +=
+           [ "//third_party/crashpad/crashpad/handler:crashpad_handler" ]
+     }
+@@ -791,7 +791,7 @@ group("content_shell_crash_test") {
+       mac_bin_path + "otool",
+     ]
+   }
+-  if (is_posix) {
++  if (is_posix && !is_bsd) {
+     data += [
+       "//components/crash/content/tools/generate_breakpad_symbols.py",
+       "//components/crash/content/tools/dmp2minidump.py",
+@@ -800,7 +800,7 @@ group("content_shell_crash_test") {
    if (is_win) {
      data_deps += [ "//build/win:copy_cdb_to_output" ]
    }
 -  if (is_posix) {
 +  if (is_posix && !is_bsd) {
      data_deps += [
        "//third_party/breakpad:dump_syms",
        "//third_party/breakpad:minidump_stackwalk",
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_test_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_test_BUILD.gn
new file mode 100644
index 000000000000..5d6baa9d83a5
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_test_BUILD.gn
@@ -0,0 +1,28 @@
+--- src/3rdparty/chromium/content/test/BUILD.gn.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/content/test/BUILD.gn
+@@ -1398,10 +1398,12 @@ test("content_browsertests") {
+   }
+ 
+   if (is_linux || is_chromeos) {
+-    sources += [
+-      "../browser/utility_process_sandbox_browsertest.cc",
+-      "../browser/zygote_host/zygote_browsertest.cc",
+-    ]
++    if (!is_bsd) {
++      sources += [
++        "../browser/utility_process_sandbox_browsertest.cc",
++        "../browser/zygote_host/zygote_browsertest.cc",
++      ]
++    }
+     deps += [
+       "//services/service_manager/tests:interfaces",
+       "//ui/gfx:test_support",
+@@ -1655,7 +1657,7 @@ static_library("run_all_unittests") {
+     ":test_support",
+     "//base/test:test_support",
+   ]
+-  if (is_linux || is_chromeos) {
++  if ((is_linux || is_chromeos) && !is_bsd) {
+     deps += [ "//content/common:set_process_title_linux" ]
+   }
+ }
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_utility_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_utility_BUILD.gn
deleted file mode 100644
index 287f2d72922f..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_utility_BUILD.gn
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/3rdparty/chromium/content/utility/BUILD.gn.orig	2020-11-07 01:22:36 UTC
-+++ src/3rdparty/chromium/content/utility/BUILD.gn
-@@ -82,7 +82,7 @@ jumbo_source_set("utility") {
-     deps += [ "//services/proxy_resolver:lib" ]
-   }
- 
--  if (is_linux && !use_qt) {
-+  if (is_linux && !use_qt && !is_bsd) {
-     deps += [ "//content/utility/soda:soda_sandbox_hook" ]
-   }
- 
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_utility_utility__blink__platform__with__sandbox__support__impl.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_utility_utility__blink__platform__with__sandbox__support__impl.cc
index f03e88ba881d..612f0d3d52f5 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_utility_utility__blink__platform__with__sandbox__support__impl.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_utility_utility__blink__platform__with__sandbox__support__impl.cc
@@ -1,29 +1,29 @@
---- src/3rdparty/chromium/content/utility/utility_blink_platform_with_sandbox_support_impl.cc.orig	2020-03-16 14:04:24 UTC
+--- src/3rdparty/chromium/content/utility/utility_blink_platform_with_sandbox_support_impl.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/utility/utility_blink_platform_with_sandbox_support_impl.cc
 @@ -9,7 +9,7 @@
  
- #if defined(OS_MACOSX)
+ #if defined(OS_MAC)
  #include "content/child/child_process_sandbox_support_impl_mac.h"
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include "content/child/child_process_sandbox_support_impl_linux.h"
  #endif
  
-@@ -17,7 +17,7 @@ namespace content {
+@@ -17,7 +17,7 @@ UtilityBlinkPlatformWithSandboxSupportImpl::
  
  UtilityBlinkPlatformWithSandboxSupportImpl::
      UtilityBlinkPlatformWithSandboxSupportImpl() {
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    mojo::PendingRemote<font_service::mojom::FontService> font_service;
    UtilityThread::Get()->BindHostReceiver(
        font_service.InitWithNewPipeAndPassReceiver());
-@@ -34,7 +34,7 @@ UtilityBlinkPlatformWithSandboxSupportImpl::
+@@ -34,7 +34,7 @@ UtilityBlinkPlatformWithSandboxSupportImpl::GetSandbox
  
  blink::WebSandboxSupport*
  UtilityBlinkPlatformWithSandboxSupportImpl::GetSandboxSupport() {
--#if defined(OS_LINUX) || defined(OS_MACOSX)
-+#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
    return sandbox_support_.get();
  #else
    return nullptr;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_utility_utility__blink__platform__with__sandbox__support__impl.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_utility_utility__blink__platform__with__sandbox__support__impl.h
index 441d61d46386..df93d4170b33 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_utility_utility__blink__platform__with__sandbox__support__impl.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_utility_utility__blink__platform__with__sandbox__support__impl.h
@@ -1,24 +1,24 @@
---- src/3rdparty/chromium/content/utility/utility_blink_platform_with_sandbox_support_impl.h.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/content/utility/utility_blink_platform_with_sandbox_support_impl.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/content/utility/utility_blink_platform_with_sandbox_support_impl.h
 @@ -11,7 +11,7 @@
  #include "build/build_config.h"
  #include "third_party/blink/public/platform/platform.h"
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include "components/services/font/public/cpp/font_loader.h"  // nogncheck
  #include "third_party/skia/include/core/SkRefCnt.h"           // nogncheck
  #endif
-@@ -39,10 +39,10 @@ class UtilityBlinkPlatformWithSandboxSupportImpl : pub
+@@ -33,10 +33,10 @@ class UtilityBlinkPlatformWithSandboxSupportImpl : pub
    blink::WebSandboxSupport* GetSandboxSupport() override;
  
   private:
--#if defined(OS_LINUX) || defined(OS_MACOSX)
-+#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_BSD)
    std::unique_ptr<blink::WebSandboxSupport> sandbox_support_;
  #endif
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    sk_sp<font_service::FontLoader> font_loader_;
  #endif
  
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_zygote_zygote__linux.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_zygote_zygote__linux.cc
new file mode 100644
index 000000000000..d927059d3542
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_zygote_zygote__linux.cc
@@ -0,0 +1,16 @@
+--- src/3rdparty/chromium/content/zygote/zygote_linux.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/content/zygote/zygote_linux.cc
+@@ -1,7 +1,7 @@
+ // 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.
+-
++#if 0
+ #include "content/zygote/zygote_linux.h"
+ 
+ #include <errno.h>
+@@ -650,3 +650,4 @@ bool Zygote::HandleGetSandboxStatus(int fd, base::Pick
+ }
+ 
+ }  // namespace content
++#endif
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_zygote_zygote__main__linux.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_zygote_zygote__main__linux.cc
similarity index 61%
rename from www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_zygote_zygote__main__linux.cc
rename to www/qt5-webengine/files/patch-src_3rdparty_chromium_content_zygote_zygote__main__linux.cc
index 5f4e44634dca..50d0fb99d2bb 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_zygote_zygote__main__linux.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_zygote_zygote__main__linux.cc
@@ -1,48 +1,48 @@
---- src/3rdparty/chromium/services/service_manager/zygote/zygote_main_linux.cc.orig	2018-11-13 18:25:11 UTC
-+++ src/3rdparty/chromium/services/service_manager/zygote/zygote_main_linux.cc
+--- src/3rdparty/chromium/content/zygote/zygote_main_linux.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/content/zygote/zygote_main_linux.cc
 @@ -11,7 +11,9 @@
  #include <stddef.h>
  #include <stdint.h>
  #include <string.h>
 +#if !defined(OS_BSD)
  #include <sys/prctl.h>
 +#endif
  #include <sys/socket.h>
  #include <sys/types.h>
  #include <unistd.h>
-@@ -101,6 +103,7 @@ static bool CreateInitProcessReaper(
+@@ -99,6 +101,7 @@ static bool EnterSuidSandbox(sandbox::SetuidSandboxCli
  // created through the setuid sandbox.
  static bool EnterSuidSandbox(sandbox::SetuidSandboxClient* setuid_sandbox,
                               base::OnceClosure post_fork_parent_callback) {
 +#if !defined(OS_BSD)
    DCHECK(setuid_sandbox);
    DCHECK(setuid_sandbox->IsSuidSandboxChild());
  
-@@ -133,6 +136,9 @@ static bool EnterSuidSandbox(sandbox::SetuidSandboxCli
+@@ -131,6 +134,9 @@ static bool EnterSuidSandbox(sandbox::SetuidSandboxCli
  
-   CHECK(service_manager::SandboxDebugHandling::SetDumpableStatusAndHandlers());
+   CHECK(sandbox::policy::SandboxDebugHandling::SetDumpableStatusAndHandlers());
    return true;
 +#else
 +  return false;
-+#endif
++#endif // !defined(OS_BSD)
  }
  
  static void DropAllCapabilities(int proc_fd) {
-@@ -178,6 +184,7 @@ static void EnterLayerOneSandbox(service_manager::Sand
+@@ -178,6 +184,7 @@ bool ZygoteMain(
  
  bool ZygoteMain(
      std::vector<std::unique_ptr<ZygoteForkDelegate>> fork_delegates) {
 +#if !defined(OS_BSD)
    sandbox::SetAmZygoteOrRenderer(true, GetSandboxFD());
  
-   auto* linux_sandbox = service_manager::SandboxLinux::GetInstance();
-@@ -240,6 +247,9 @@ bool ZygoteMain(
+   auto* linux_sandbox = sandbox::policy::SandboxLinux::GetInstance();
+@@ -243,6 +250,9 @@ bool ZygoteMain(
  
    // This function call can return multiple times, once per fork().
    return zygote.ProcessRequests();
 +#else
 +  return false;
-+#endif
++#endif // !defined(OS_BSD)
  }
  
- }  // namespace service_manager
+ }  // namespace content
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_device_gamepad_gamepad__provider.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_device_gamepad_gamepad__provider.cc
index e1f722403ed5..94647a6f6c06 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_device_gamepad_gamepad__provider.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_device_gamepad_gamepad__provider.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/device/gamepad/gamepad_provider.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/device/gamepad/gamepad_provider.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/device/gamepad/gamepad_provider.cc
-@@ -167,7 +167,7 @@ void GamepadProvider::Initialize(std::unique_ptr<Gamep
+@@ -149,7 +149,7 @@ void GamepadProvider::Initialize(std::unique_ptr<Gamep
  
    if (!polling_thread_)
      polling_thread_.reset(new base::Thread("Gamepad polling thread"));
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    // On Linux, the data fetcher needs to watch file descriptors, so the message
    // loop needs to be a libevent loop.
-   const base::MessageLoop::Type kMessageLoopType = base::MessageLoop::TYPE_IO;
+   const base::MessagePumpType kMessageLoopType = base::MessagePumpType::IO;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_extensions_browser_api_messaging_message__service.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_extensions_browser_api_messaging_message__service.cc
index 504c26000ec5..57fcb54f75f0 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_extensions_browser_api_messaging_message__service.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_extensions_browser_api_messaging_message__service.cc
@@ -1,34 +1,35 @@
---- src/3rdparty/chromium/extensions/browser/api/messaging/message_service.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/extensions/browser/api/messaging/message_service.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/extensions/browser/api/messaging/message_service.cc
-@@ -61,7 +61,7 @@ namespace {
+@@ -61,7 +61,7 @@ const char kReceivingEndDoesntExistError[] =
  
  const char kReceivingEndDoesntExistError[] =
      "Could not establish connection. Receiving end does not exist.";
--#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
-+#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || 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 kMissingPermissionError[] =
      "Access to native messaging requires nativeMessaging permission.";
- const char kProhibitedByPoliciesError[] =
-@@ -382,7 +382,7 @@ void MessageService::OpenChannelToNativeApp(
+@@ -396,7 +396,7 @@ void MessageService::OpenChannelToNativeApp(
    if (!opener_port->IsValidPort())
      return;
  
--#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
-+#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || 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)
    bool has_permission = extension->permissions_data()->HasAPIPermission(
        APIPermission::kNativeMessaging);
-   if (!has_permission) {
-@@ -432,11 +432,11 @@ void MessageService::OpenChannelToNativeApp(
+@@ -447,12 +447,12 @@ void MessageService::OpenChannelToNativeApp(
    channel->opener->IncrementLazyKeepaliveCount();
  
    AddChannel(std::move(channel), receiver_port_id);
--#else  // !(defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX))
-+#else  // !(defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD))
+-#else   // !(defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) ||
++#else   // !(defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || defined(OS_BSD) ||
+         // defined(OS_CHROMEOS))
    const char kNativeMessagingNotSupportedError[] =
        "Native Messaging is not supported on this platform.";
    opener_port->DispatchOnDisconnect(kNativeMessagingNotSupportedError);
--#endif  // !(defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX))
-+#endif  // !(defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD))
+-#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))
  }
  
- void MessageService::OpenChannelToTab(const ChannelEndpoint& source,
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_extensions_browser_browser__context__keyed__service__factories.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_extensions_browser_browser__context__keyed__service__factories.cc
index adc37efe2f1b..64ced00400d9 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_extensions_browser_browser__context__keyed__service__factories.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_extensions_browser_browser__context__keyed__service__factories.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/extensions/browser/browser_context_keyed_service_factories.cc.orig	2020-04-08 09:41:36 UTC
+--- src/3rdparty/chromium/extensions/browser/browser_context_keyed_service_factories.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/extensions/browser/browser_context_keyed_service_factories.cc
-@@ -81,7 +81,7 @@ void EnsureBrowserContextKeyedServiceFactoriesBuilt() 
-   IdleManagerFactory::GetInstance();
- #endif // !defined(TOOLKIT_QT)
-   ManagementAPI::GetFactoryInstance();
--#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MACOSX)
-+#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD)
+@@ -106,7 +106,7 @@ void EnsureBrowserContextKeyedServiceFactoriesBuilt() 
+ #if defined(OS_CHROMEOS)
+   NetworkingConfigServiceFactory::GetInstance();
+ #endif
+-#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)
    NetworkingPrivateEventRouterFactory::GetInstance();
  #endif
-   PowerAPI::GetFactoryInstance();
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_extensions_shell_app_shell__main__delegate.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_extensions_shell_app_shell__main__delegate.cc
index 2e31ad26e4b3..d630dd96839b 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_extensions_shell_app_shell__main__delegate.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_extensions_shell_app_shell__main__delegate.cc
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/extensions/shell/app/shell_main_delegate.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/extensions/shell/app/shell_main_delegate.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/extensions/shell/app/shell_main_delegate.cc
-@@ -38,7 +38,7 @@
+@@ -37,7 +37,7 @@
  
  #if defined(OS_WIN)
  #include "base/base_paths_win.h"
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include "base/nix/xdg_util.h"
- #elif defined(OS_MACOSX)
+ #elif defined(OS_MAC)
  #include "base/base_paths_mac.h"
-@@ -70,7 +70,7 @@ base::FilePath GetDataPath() {
+@@ -69,7 +69,7 @@ base::FilePath GetDataPath() {
      return cmd_line->GetSwitchValuePath(switches::kContentShellDataPath);
  
    base::FilePath data_dir;
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    std::unique_ptr<base::Environment> env(base::Environment::Create());
    data_dir = base::nix::GetXDGDirectory(
        env.get(), base::nix::kXdgConfigHomeEnvVar, base::nix::kDotConfigDir);
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_common_gpu__memory__buffer__support.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_common_gpu__memory__buffer__support.cc
index c93c44ba4d8a..d5bfcfe5b1e9 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_common_gpu__memory__buffer__support.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_common_gpu__memory__buffer__support.cc
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/gpu/command_buffer/common/gpu_memory_buffer_support.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/gpu/command_buffer/common/gpu_memory_buffer_support.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/gpu/command_buffer/common/gpu_memory_buffer_support.cc
-@@ -54,7 +54,7 @@ bool IsImageSizeValidForGpuMemoryBufferFormat(const gf
+@@ -55,7 +55,7 @@ uint32_t GetPlatformSpecificTextureTarget() {
  uint32_t GetPlatformSpecificTextureTarget() {
- #if defined(OS_MACOSX)
+ #if defined(OS_MAC)
    return macos_specific_texture_target;
--#elif defined(OS_ANDROID) || defined(OS_LINUX)
-+#elif defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+-#elif defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    return GL_TEXTURE_EXTERNAL_OES;
  #elif defined(OS_WIN) || defined(OS_FUCHSIA)
    return GL_TEXTURE_2D;
-@@ -84,7 +84,7 @@ GPU_EXPORT uint32_t GetBufferTextureTarget(gfx::Buffer
+@@ -85,7 +85,7 @@ GPU_EXPORT bool NativeBufferNeedsPlatformSpecificTextu
  
  GPU_EXPORT bool NativeBufferNeedsPlatformSpecificTextureTarget(
      gfx::BufferFormat format) {
--#if defined(USE_OZONE) || defined(OS_LINUX)
-+#if defined(USE_OZONE) || defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(USE_OZONE) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(USE_OZONE) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    // Always use GL_TEXTURE_2D as the target for RGB textures.
    // https://crbug.com/916728
    if (format == gfx::BufferFormat::R_8 || format == gfx::BufferFormat::RG_88 ||
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_external__semaphore.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_external__semaphore.cc
new file mode 100644
index 000000000000..38e2cda79a8e
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_external__semaphore.cc
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/gpu/command_buffer/service/external_semaphore.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/gpu/command_buffer/service/external_semaphore.cc
+@@ -39,7 +39,7 @@ GLuint ImportSemaphoreHandleToGLSemaphore(SemaphoreHan
+       },
+       base::Time::Now()));
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+   if (handle.vk_handle_type() !=
+       VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT) {
+     DLOG(ERROR) << "Importing semaphore handle of unexpected type:"
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_external__vk__image__backing.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_external__vk__image__backing.cc
index d282e4ede213..233454f98d85 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_external__vk__image__backing.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_external__vk__image__backing.cc
@@ -1,82 +1,38 @@
---- src/3rdparty/chromium/gpu/command_buffer/service/external_vk_image_backing.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/gpu/command_buffer/service/external_vk_image_backing.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/gpu/command_buffer/service/external_vk_image_backing.cc
 @@ -29,7 +29,7 @@
- #include "ui/gl/buildflags.h"
- #include "ui/gl/gl_context.h"
+ #include "ui/gl/gl_version_info.h"
+ #include "ui/gl/scoped_binders.h"
  
--#if defined(OS_LINUX) && BUILDFLAG(USE_DAWN)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && BUILDFLAG(USE_DAWN)
+-#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && BUILDFLAG(USE_DAWN)
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && BUILDFLAG(USE_DAWN)
  #include "gpu/command_buffer/service/external_vk_image_dawn_representation.h"
  #endif
  
-@@ -37,7 +37,7 @@
- #include "gpu/vulkan/fuchsia/vulkan_fuchsia_ext.h"
- #endif
- 
--#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA)
-+#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD)
- #define GL_DEDICATED_MEMORY_OBJECT_EXT 0x9581
- #define GL_TEXTURE_TILING_EXT 0x9580
- #define GL_TILING_TYPES_EXT 0x9583
-@@ -510,7 +510,7 @@ std::unique_ptr<SharedImageRepresentationDawn>
+@@ -583,7 +583,7 @@ ExternalVkImageBacking::ProduceDawn(SharedImageManager
  ExternalVkImageBacking::ProduceDawn(SharedImageManager* manager,
                                      MemoryTypeTracker* tracker,
                                      WGPUDevice wgpuDevice) {
--#if defined(OS_LINUX) && BUILDFLAG(USE_DAWN)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && BUILDFLAG(USE_DAWN)
+-#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && BUILDFLAG(USE_DAWN)
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && BUILDFLAG(USE_DAWN)
    auto wgpu_format = viz::ToWGPUFormat(format());
  
    if (wgpu_format == WGPUTextureFormat_Undefined) {
-@@ -529,14 +529,14 @@ ExternalVkImageBacking::ProduceDawn(SharedImageManager
+@@ -602,7 +602,7 @@ ExternalVkImageBacking::ProduceDawn(SharedImageManager
  
    return std::make_unique<ExternalVkImageDawnRepresentation>(
        manager, this, tracker, wgpuDevice, wgpu_format, std::move(memory_fd));
--#else  // !defined(OS_LINUX) || !BUILDFLAG(USE_DAWN)
-+#else  // (!defined(OS_LINUX) && !defined(OS_BSD)) || !BUILDFLAG(USE_DAWN)
+-#else  // (!defined(OS_LINUX) && !defined(OS_CHROMEOS)) || !BUILDFLAG(USE_DAWN)
++#else  // (!defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_BSD)) || !BUILDFLAG(USE_DAWN)
    NOTIMPLEMENTED_LOG_ONCE();
    return nullptr;
  #endif
- }
- 
- GLuint ExternalVkImageBacking::ProduceGLTextureInternal() {
--#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || \
-+#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD) || \
-     defined(OS_WIN)
-   GrVkImageInfo image_info;
-   bool result = backend_texture_.getVkImageInfo(&image_info);
-@@ -545,7 +545,7 @@ GLuint ExternalVkImageBacking::ProduceGLTextureInterna
+@@ -615,7 +615,7 @@ GLuint ExternalVkImageBacking::ProduceGLTextureInterna
    gl::GLApi* api = gl::g_current_gl_context;
-   GLuint memory_object = 0;
+   base::Optional<ScopedDedicatedMemoryObject> memory_object;
    if (!use_separate_gl_texture()) {
--#if defined(OS_LINUX) || defined(OS_ANDROID)
-+#if defined(OS_LINUX) || 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)
      auto memory_fd = image_->GetMemoryFd();
-     if (!memory_fd.is_valid()) {
+     if (!memory_fd.is_valid())
        return 0;
-@@ -608,7 +608,7 @@ GLuint ExternalVkImageBacking::ProduceGLTextureInterna
-   }
-   api->glBindTextureFn(GL_TEXTURE_2D, old_texture_binding);
-   return texture_service_id;
--#else  // !defined(OS_LINUX) && !defined(OS_ANDROID) && !defined(OS_FUCHSIA)
-+#else  // !defined(OS_LINUX) && !defined(OS_ANDROID) && !defined(OS_FUCHSIA) && !defined(OS_BSD)
- #error Unsupported OS
- #endif
- }
-@@ -622,7 +622,7 @@ ExternalVkImageBacking::ProduceGLTexture(SharedImageMa
-     return nullptr;
-   }
- 
--#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || \
-+#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD) || \
-     defined(OS_WIN)
-   if (!texture_) {
-     GLuint texture_service_id = ProduceGLTextureInternal();
-@@ -666,7 +666,7 @@ ExternalVkImageBacking::ProduceGLTexturePassthrough(
-     return nullptr;
-   }
- 
--#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || \
-+#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD) || \
-     defined(OS_WIN)
-   if (!texture_passthrough_) {
-     GLuint texture_service_id = ProduceGLTextureInternal();
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_external__vk__image__backing.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_external__vk__image__backing.h
deleted file mode 100644
index 532edfc3d66f..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_external__vk__image__backing.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/3rdparty/chromium/gpu/command_buffer/service/external_vk_image_backing.h.orig	2020-11-07 01:22:36 UTC
-+++ src/3rdparty/chromium/gpu/command_buffer/service/external_vk_image_backing.h
-@@ -151,7 +151,7 @@ class ExternalVkImageBacking final : public ClearTrack
- 
-  private:
- 
--#if defined(OS_LINUX) || defined(OS_ANDROID)
-+#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
-   // Extract file descriptor from image
-   int GetMemoryFd(const GrVkImageInfo& image_info);
- #endif
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_external__vk__image__gl__representation.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_external__vk__image__gl__representation.cc
deleted file mode 100644
index c2158ce9d26c..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_external__vk__image__gl__representation.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/3rdparty/chromium/gpu/command_buffer/service/external_vk_image_gl_representation.cc.orig	2020-11-07 01:22:36 UTC
-+++ src/3rdparty/chromium/gpu/command_buffer/service/external_vk_image_gl_representation.cc
-@@ -188,7 +188,7 @@ GLuint ExternalVkImageGLRepresentationShared::ImportVk
-     SemaphoreHandle handle) {
-   if (!handle.is_valid())
-     return 0;
--#if defined(OS_LINUX) || defined(OS_ANDROID)
-+#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
-   if (handle.vk_handle_type() !=
-       VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT) {
-     DLOG(ERROR) << "Importing semaphore handle of unexpected type:"
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_program__manager.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_program__manager.cc
index 5f7c0cc5ef0e..e98c15fa4ea7 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_program__manager.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_command__buffer_service_program__manager.cc
@@ -1,14 +1,14 @@
---- src/3rdparty/chromium/gpu/command_buffer/service/program_manager.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/gpu/command_buffer/service/program_manager.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/gpu/command_buffer/service/program_manager.cc
-@@ -31,7 +31,11 @@
- #include "gpu/command_buffer/service/progress_reporter.h"
+@@ -30,7 +30,11 @@
+ #include "gpu/command_buffer/service/program_cache.h"
  #include "gpu/command_buffer/service/shader_manager.h"
  #include "gpu/config/gpu_preferences.h"
 +#if defined(OS_BSD)
 +#include <re2/re2.h>
 +#else
  #include "third_party/re2/src/re2/re2.h"
 +#endif
  #include "ui/gl/gl_version_info.h"
+ #include "ui/gl/progress_reporter.h"
  
- using base::TimeDelta;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_config_gpu__control__list.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_config_gpu__control__list.cc
index 3e207886d85d..cd22d1dbeb0c 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_config_gpu__control__list.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_config_gpu__control__list.cc
@@ -1,32 +1,32 @@
---- src/3rdparty/chromium/gpu/config/gpu_control_list.cc.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/gpu/config/gpu_control_list.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/gpu/config/gpu_control_list.cc
-@@ -16,7 +16,11 @@
+@@ -17,7 +17,11 @@
  #include "base/values.h"
  #include "build/build_config.h"
  #include "gpu/config/gpu_util.h"
 +#if defined(OS_BSD)
 +#include <re2/re2.h>
 +#else
  #include "third_party/re2/src/re2/re2.h"
 +#endif // defined(OS_BSD)
  
  namespace gpu {
  namespace {
-@@ -213,7 +217,7 @@ bool GpuControlList::More::GLVersionInfoMismatch(
+@@ -275,7 +279,7 @@ GpuControlList::GLType GpuControlList::More::GetDefaul
  GpuControlList::GLType GpuControlList::More::GetDefaultGLType() {
  #if defined(OS_CHROMEOS)
    return kGLTypeGL;
 -#elif defined(OS_LINUX) || defined(OS_OPENBSD)
 +#elif defined(OS_LINUX) || defined(OS_BSD)
    return kGLTypeGL;
- #elif defined(OS_MACOSX)
+ #elif defined(OS_MAC)
    return kGLTypeGL;
-@@ -699,7 +703,7 @@ GpuControlList::OsType GpuControlList::GetOsType() {
+@@ -781,7 +785,7 @@ GpuControlList::OsType GpuControlList::GetOsType() {
    return kOsAndroid;
  #elif defined(OS_FUCHSIA)
    return kOsFuchsia;
 -#elif defined(OS_LINUX) || defined(OS_OPENBSD)
 +#elif defined(OS_LINUX) || defined(OS_BSD)
    return kOsLinux;
- #elif defined(OS_MACOSX)
+ #elif defined(OS_MAC)
    return kOsMacosx;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_config_gpu__test__config.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_config_gpu__test__config.cc
index 310a2fa61210..c8d71e31c3cb 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_config_gpu__test__config.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_config_gpu__test__config.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/gpu/config/gpu_test_config.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/gpu/config/gpu_test_config.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/gpu/config/gpu_test_config.cc
-@@ -25,7 +25,7 @@ namespace {
+@@ -27,7 +27,7 @@ GPUTestConfig::OS GetCurrentOS() {
  GPUTestConfig::OS GetCurrentOS() {
  #if defined(OS_CHROMEOS)
    return GPUTestConfig::kOsChromeOS;
 -#elif defined(OS_LINUX) || defined(OS_OPENBSD)
 +#elif defined(OS_LINUX) || defined(OS_BSD)
    return GPUTestConfig::kOsLinux;
  #elif defined(OS_WIN)
    int32_t major_version = 0;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_common_gpu__memory__buffer__support.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_common_gpu__memory__buffer__support.cc
index df1a32be61ee..bf4a4352c7d4 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_common_gpu__memory__buffer__support.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_common_gpu__memory__buffer__support.cc
@@ -1,29 +1,38 @@
---- src/3rdparty/chromium/gpu/ipc/common/gpu_memory_buffer_support.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/gpu/ipc/common/gpu_memory_buffer_support.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/gpu/ipc/common/gpu_memory_buffer_support.cc
-@@ -14,7 +14,7 @@
+@@ -16,7 +16,7 @@
  #include "gpu/ipc/common/gpu_memory_buffer_impl_io_surface.h"
  #endif
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include "ui/gfx/client_native_pixmap_factory.h"
  #include "ui/gfx/linux/client_native_pixmap_factory_dmabuf.h"
  #endif
-@@ -24,7 +24,7 @@
+@@ -26,7 +26,7 @@
  #include "ui/ozone/public/ozone_platform.h"
  #endif
  
--#if defined(USE_OZONE) || defined(OS_LINUX)
-+#if defined(USE_OZONE) || defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(USE_OZONE) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(USE_OZONE) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include "gpu/ipc/common/gpu_memory_buffer_impl_native_pixmap.h"
  #endif
  
-@@ -181,7 +181,7 @@ GpuMemoryBufferSupport::CreateGpuMemoryBufferImplFromH
+@@ -66,7 +66,7 @@ GpuMemoryBufferSupport::GetNativeGpuMemoryBufferType()
+   return gfx::IO_SURFACE_BUFFER;
+ #elif defined(OS_ANDROID)
+   return gfx::ANDROID_HARDWARE_BUFFER;
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(USE_OZONE)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) || defined(USE_OZONE)
+   return gfx::NATIVE_PIXMAP;
+ #elif defined(OS_WIN)
+   return gfx::DXGI_SHARED_HANDLE;
+@@ -194,7 +194,7 @@ GpuMemoryBufferSupport::CreateGpuMemoryBufferImplFromH
        return GpuMemoryBufferImplIOSurface::CreateFromHandle(
            std::move(handle), size, format, usage, std::move(callback));
  #endif
--#if defined(OS_LINUX) || defined(USE_OZONE)
-+#if defined(OS_LINUX) || defined(USE_OZONE) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) || defined(USE_OZONE)
      case gfx::NATIVE_PIXMAP:
        return GpuMemoryBufferImplNativePixmap::CreateFromHandle(
            client_native_pixmap_factory(), std::move(handle), size, format,
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_common_gpu__memory__buffer__support.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_common_gpu__memory__buffer__support.h
index 389adaf7f4d2..7985da8b5648 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_common_gpu__memory__buffer__support.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_common_gpu__memory__buffer__support.h
@@ -1,29 +1,29 @@
---- src/3rdparty/chromium/gpu/ipc/common/gpu_memory_buffer_support.h.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/gpu/ipc/common/gpu_memory_buffer_support.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/gpu/ipc/common/gpu_memory_buffer_support.h
 @@ -16,7 +16,7 @@
  #include "ui/gfx/geometry/size.h"
  #include "ui/gfx/gpu_memory_buffer.h"
  
--#if defined(OS_LINUX) || defined(USE_OZONE)
-+#if defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) || defined(USE_OZONE)
  namespace gfx {
  class ClientNativePixmapFactory;
  }
 @@ -38,7 +38,7 @@ class GPU_EXPORT GpuMemoryBufferSupport {
    bool IsNativeGpuMemoryBufferConfigurationSupported(gfx::BufferFormat format,
                                                       gfx::BufferUsage usage);
  
--#if defined(OS_LINUX) || defined(USE_OZONE)
-+#if defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) || defined(USE_OZONE)
    gfx::ClientNativePixmapFactory* client_native_pixmap_factory() {
      return client_native_pixmap_factory_.get();
    }
-@@ -61,7 +61,7 @@ class GPU_EXPORT GpuMemoryBufferSupport {
+@@ -62,7 +62,7 @@ class GPU_EXPORT GpuMemoryBufferSupport {
        GpuMemoryBufferImpl::DestructionCallback callback);
  
   private:
--#if defined(OS_LINUX) || defined(USE_OZONE)
-+#if defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE)
+-#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<gfx::ClientNativePixmapFactory> client_native_pixmap_factory_;
  #endif
  
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_service_gpu__init.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_service_gpu__init.cc
index 1a0aacbdf4b9..1861e04e373e 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_service_gpu__init.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_service_gpu__init.cc
@@ -1,136 +1,100 @@
---- src/3rdparty/chromium/gpu/ipc/service/gpu_init.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/gpu/ipc/service/gpu_init.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/gpu/ipc/service/gpu_init.cc
-@@ -92,7 +92,7 @@ void InitializePlatformOverlaySettings(GPUInfo* gpu_in
+@@ -109,7 +109,7 @@ void InitializePlatformOverlaySettings(GPUInfo* gpu_in
  #endif
  }
  
 -#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !BUILDFLAG(IS_CHROMECAST)
 +#if (defined(OS_LINUX) && !defined(OS_CHROMEOS) && !BUILDFLAG(IS_CHROMECAST)) || defined(OS_BSD)
  bool CanAccessNvidiaDeviceFile() {
    bool res = true;
    base::ScopedBlockingCall scoped_blocking_call(FROM_HERE,
-@@ -103,7 +103,7 @@ bool CanAccessNvidiaDeviceFile() {
+@@ -120,7 +120,7 @@ bool CanAccessNvidiaDeviceFile() {
    }
    return res;
  }
 -#endif  // OS_LINUX && !OS_CHROMEOS && !BUILDFLAG(IS_CHROMECAST)
 +#endif  // (OS_LINUX && !OS_CHROMEOS && !BUILDFLAG(IS_CHROMECAST)) || defined(OS_BSD)
  
  class GpuWatchdogInit {
   public:
-@@ -161,7 +161,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
-   gpu_info_.subpixel_font_rendering = true;
- #endif
+@@ -205,7 +205,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 (gpu_info_.gpu.vendor_id == 0x10de &&  // NVIDIA
        gpu_info_.gpu.driver_vendor == "NVIDIA" && !CanAccessNvidiaDeviceFile())
      return false;
-@@ -213,7 +213,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
-   delayed_watchdog_enable = true;
- #endif
- 
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || 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.
-@@ -258,7 +258,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
-   }
- 
-   bool attempted_startsandbox = false;
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) && !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.
-@@ -267,7 +267,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
-         watchdog_thread_.get(), &gpu_info_, gpu_preferences_);
-     attempted_startsandbox = true;
+@@ -339,14 +339,14 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
    }
--#endif  // defined(OS_LINUX)
-+#endif  // defined(OS_LINUX) && !defined(OS_BSD)
- 
-   base::TimeTicks before_initialize_one_off = base::TimeTicks::Now();
- 
-@@ -291,14 +291,14 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
-   }
-   if (gl_initialized && use_swiftshader &&
+   if (gl_initialized && gl_use_swiftshader_ &&
        gl::GetGLImplementation() != gl::kGLImplementationSwiftShaderGL) {
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
      VLOG(1) << "Quit GPU process launch to fallback to SwiftShader cleanly "
              << "on Linux";
      return false;
  #else
      gl::init::ShutdownGL(true);
      gl_initialized = false;
--#endif  // OS_LINUX
-+#endif  // OS_LINUX || OS_BSD
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    }
  
    if (!gl_initialized) {
-@@ -324,7 +324,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
-     }
-   }
- 
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) && !defined(OS_BSD)
-   // The ContentSandboxHelper is currently the only one implementation of
-   // gpu::GpuSandboxHelper and it has no dependency. Except on Linux where
-   // VaapiWrapper checks the GL implementation to determine which display
-@@ -375,7 +375,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+@@ -426,7 +426,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
            command_line, gpu_feature_info_,
            gpu_preferences_.disable_software_rasterizer, false);
-       if (use_swiftshader) {
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+       if (gl_use_swiftshader_) {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
          VLOG(1) << "Quit GPU process launch to fallback to SwiftShader cleanly "
                  << "on Linux";
          return false;
-@@ -389,7 +389,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+@@ -440,7 +440,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
                << "failed";
            return false;
          }
--#endif  // OS_LINUX
-+#endif  // OS_LINUX || OS_BSD
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
        }
-     } else {  // use_swiftshader == true
+     } else {  // gl_use_swiftshader_ == true
        switch (gpu_preferences_.use_vulkan) {
-@@ -445,7 +445,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+@@ -516,7 +516,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
  
-   InitializePlatformOverlaySettings(&gpu_info_);
+   InitializePlatformOverlaySettings(&gpu_info_, gpu_feature_info_);
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    // 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.
-@@ -464,7 +464,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+@@ -535,7 +535,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
        return false;
      }
    }
--#endif  // defined(OS_LINUX)
-+#endif  // defined(OS_LINUX) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
-   if (use_swiftshader) {
+   if (gl_use_swiftshader_) {
      AdjustInfoToSwiftShader();
-@@ -631,7 +631,7 @@ void GpuInit::InitializeInProcess(base::CommandLine* c
+@@ -703,7 +703,7 @@ void GpuInit::InitializeInProcess(base::CommandLine* c
  
-   InitializePlatformOverlaySettings(&gpu_info_);
+   InitializePlatformOverlaySettings(&gpu_info_, gpu_feature_info_);
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    // 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.
-@@ -651,7 +651,7 @@ void GpuInit::InitializeInProcess(base::CommandLine* c
+@@ -723,7 +723,7 @@ void GpuInit::InitializeInProcess(base::CommandLine* c
        }
      }
    }
--#endif  // defined(OS_LINUX)
-+#endif  // defined(OS_LINUX) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
-   if (use_swiftshader) {
+   if (gl_use_swiftshader_) {
      AdjustInfoToSwiftShader();
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_service_gpu__memory__buffer__factory.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_service_gpu__memory__buffer__factory.cc
index 3869ff69bd0a..a36899972fea 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_service_gpu__memory__buffer__factory.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_service_gpu__memory__buffer__factory.cc
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/gpu/ipc/service/gpu_memory_buffer_factory.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/gpu/ipc/service/gpu_memory_buffer_factory.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/gpu/ipc/service/gpu_memory_buffer_factory.cc
 @@ -12,7 +12,7 @@
  #include "gpu/ipc/service/gpu_memory_buffer_factory_io_surface.h"
  #endif
  
--#if defined(OS_LINUX) || defined(OS_FUCHSIA)
-+#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
  #include "gpu/ipc/service/gpu_memory_buffer_factory_native_pixmap.h"
  #endif
  
 @@ -34,7 +34,7 @@ GpuMemoryBufferFactory::CreateNativeType(
    return std::make_unique<GpuMemoryBufferFactoryIOSurface>();
  #elif defined(OS_ANDROID)
    return std::make_unique<GpuMemoryBufferFactoryAndroidHardwareBuffer>();
--#elif defined(OS_LINUX) || defined(OS_FUCHSIA)
-+#elif defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
    return std::make_unique<GpuMemoryBufferFactoryNativePixmap>(
        vulkan_context_provider);
  #elif defined(OS_WIN)
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_service_gpu__watchdog__thread.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_service_gpu__watchdog__thread.cc
index 18c1d9d4f780..d0d75deda70f 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_service_gpu__watchdog__thread.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_service_gpu__watchdog__thread.cc
@@ -1,56 +1,56 @@
---- src/3rdparty/chromium/gpu/ipc/service/gpu_watchdog_thread.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/gpu/ipc/service/gpu_watchdog_thread.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/gpu/ipc/service/gpu_watchdog_thread.cc
-@@ -64,7 +64,7 @@ void GpuWatchdogTimeoutHistogram(GpuWatchdogTimeoutEve
-   base::UmaHistogramEnumeration("GPU.WatchdogThread.V1.Timeout", timeout_event);
- }
+@@ -57,7 +57,7 @@ const int kNewGpuTimeout = 15000;
+ 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
-@@ -82,7 +82,7 @@ GpuWatchdogThreadImplV1::GpuWatchdogThreadImplV1()
+@@ -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
-@@ -104,7 +104,7 @@ GpuWatchdogThreadImplV1::GpuWatchdogThreadImplV1()
+@@ -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_;
-@@ -252,7 +252,7 @@ GpuWatchdogThreadImplV1::~GpuWatchdogThreadImplV1() {
+@@ -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
-@@ -435,7 +435,7 @@ void GpuWatchdogThreadImplV1::DeliberatelyTerminateToR
+@@ -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_) {
-@@ -610,7 +610,7 @@ base::ThreadTicks GpuWatchdogThreadImplV1::GetWatchedT
+@@ -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/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_service_gpu__watchdog__thread.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_service_gpu__watchdog__thread.h
index 4e23c471b835..c114c47d3286 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_service_gpu__watchdog__thread.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_service_gpu__watchdog__thread.h
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/gpu/ipc/service/gpu_watchdog_thread.h.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/gpu/ipc/service/gpu_watchdog_thread.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/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
  
-@@ -271,7 +271,7 @@ class GPU_IPC_SERVICE_EXPORT GpuWatchdogThreadImplV1
-   // whether GpuWatchdogThreadEvent::kGpuWatchdogStart has been recorded.
-   bool is_watchdog_start_histogram_recorded = false;
+@@ -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/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_vulkan_vulkan__function__pointers.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_vulkan_vulkan__function__pointers.cc
index 13bd6eef33ae..888fd629a259 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_vulkan_vulkan__function__pointers.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_vulkan_vulkan__function__pointers.cc
@@ -1,32 +1,38 @@
---- src/3rdparty/chromium/gpu/vulkan/vulkan_function_pointers.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/gpu/vulkan/vulkan_function_pointers.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/gpu/vulkan/vulkan_function_pointers.cc
-@@ -828,7 +828,7 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointer
+@@ -862,7 +862,7 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointer
    }
  #endif  // defined(OS_ANDROID)
  
--#if defined(OS_LINUX) || defined(OS_ANDROID)
-+#if defined(OS_LINUX) || 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)
    if (gfx::HasExtension(enabled_extensions,
                          VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME)) {
-     vkGetSemaphoreFdKHRFn = reinterpret_cast<PFN_vkGetSemaphoreFdKHR>(
-@@ -847,9 +847,9 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointer
+     vkGetSemaphoreFdKHR = reinterpret_cast<PFN_vkGetSemaphoreFdKHR>(
+@@ -881,7 +881,7 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointer
        return false;
      }
    }
--#endif  // defined(OS_LINUX) || defined(OS_ANDROID)
-+#endif  // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#endif  // 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)
+ #if defined(OS_WIN)
+   if (gfx::HasExtension(enabled_extensions,
+@@ -906,7 +906,7 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointer
+   }
+ #endif  // defined(OS_WIN)
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
    if (gfx::HasExtension(enabled_extensions,
                          VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME)) {
-     vkGetMemoryFdKHRFn = reinterpret_cast<PFN_vkGetMemoryFdKHR>(
-@@ -869,7 +869,7 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointer
+     vkGetMemoryFdKHR = reinterpret_cast<PFN_vkGetMemoryFdKHR>(
+@@ -926,7 +926,7 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointer
        return false;
      }
    }
--#endif  // defined(OS_LINUX) || defined(OS_ANDROID)
-+#endif  // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
  
- #if defined(OS_FUCHSIA)
+ #if defined(OS_WIN)
    if (gfx::HasExtension(enabled_extensions,
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_vulkan_vulkan__function__pointers.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_vulkan_vulkan__function__pointers.h
index a28a148510bc..a3836d70cf42 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_vulkan_vulkan__function__pointers.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_vulkan_vulkan__function__pointers.h
@@ -1,52 +1,71 @@
---- src/3rdparty/chromium/gpu/vulkan/vulkan_function_pointers.h.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/gpu/vulkan/vulkan_function_pointers.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/gpu/vulkan/vulkan_function_pointers.h
-@@ -227,15 +227,15 @@ struct VulkanFunctionPointers {
-       vkGetAndroidHardwareBufferPropertiesANDROIDFn;
+@@ -236,10 +236,10 @@ struct COMPONENT_EXPORT(VULKAN) VulkanFunctionPointers
+       vkGetAndroidHardwareBufferPropertiesANDROID;
  #endif  // defined(OS_ANDROID)
  
--#if defined(OS_LINUX) || defined(OS_ANDROID)
-+#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
-   VulkanFunction<PFN_vkGetSemaphoreFdKHR> vkGetSemaphoreFdKHRFn;
-   VulkanFunction<PFN_vkImportSemaphoreFdKHR> vkImportSemaphoreFdKHRFn;
--#endif  // defined(OS_LINUX) || defined(OS_ANDROID)
-+#endif  // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
- 
--#if defined(OS_LINUX) || defined(OS_ANDROID)
-+#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
-   VulkanFunction<PFN_vkGetMemoryFdKHR> vkGetMemoryFdKHRFn;
-   VulkanFunction<PFN_vkGetMemoryFdPropertiesKHR> vkGetMemoryFdPropertiesKHRFn;
--#endif  // defined(OS_LINUX) || defined(OS_ANDROID)
-+#endif  // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
- 
- #if defined(OS_FUCHSIA)
-   VulkanFunction<PFN_vkImportSemaphoreZirconHandleFUCHSIA>
-@@ -447,18 +447,18 @@ struct VulkanFunctionPointers {
-       ->vkGetAndroidHardwareBufferPropertiesANDROIDFn
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+   VulkanFunction<PFN_vkGetSemaphoreFdKHR> vkGetSemaphoreFdKHR;
+   VulkanFunction<PFN_vkImportSemaphoreFdKHR> vkImportSemaphoreFdKHR;
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ 
+ #if defined(OS_WIN)
+   VulkanFunction<PFN_vkGetSemaphoreWin32HandleKHR> vkGetSemaphoreWin32HandleKHR;
+@@ -247,10 +247,10 @@ struct COMPONENT_EXPORT(VULKAN) VulkanFunctionPointers
+       vkImportSemaphoreWin32HandleKHR;
+ #endif  // defined(OS_WIN)
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+   VulkanFunction<PFN_vkGetMemoryFdKHR> vkGetMemoryFdKHR;
+   VulkanFunction<PFN_vkGetMemoryFdPropertiesKHR> vkGetMemoryFdPropertiesKHR;
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ 
+ #if defined(OS_WIN)
+   VulkanFunction<PFN_vkGetMemoryWin32HandleKHR> vkGetMemoryWin32HandleKHR;
+@@ -955,7 +955,7 @@ ALWAYS_INLINE VkResult vkGetAndroidHardwareBufferPrope
+ }
  #endif  // defined(OS_ANDROID)
  
--#if defined(OS_LINUX) || defined(OS_ANDROID)
-+#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
- #define vkGetSemaphoreFdKHR \
-   gpu::GetVulkanFunctionPointers()->vkGetSemaphoreFdKHRFn
- #define vkImportSemaphoreFdKHR \
-   gpu::GetVulkanFunctionPointers()->vkImportSemaphoreFdKHRFn
--#endif  // defined(OS_LINUX) || defined(OS_ANDROID)
-+#endif  // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
- 
--#if defined(OS_LINUX) || defined(OS_ANDROID)
-+#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
- #define vkGetMemoryFdKHR gpu::GetVulkanFunctionPointers()->vkGetMemoryFdKHRFn
- #define vkGetMemoryFdPropertiesKHR \
-   gpu::GetVulkanFunctionPointers()->vkGetMemoryFdPropertiesKHRFn
--#endif  // defined(OS_LINUX) || defined(OS_ANDROID)
-+#endif  // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
- 
- #if defined(OS_FUCHSIA)
- #define vkImportSemaphoreZirconHandleFUCHSIA \
-@@ -493,4 +493,4 @@ struct VulkanFunctionPointers {
-   gpu::GetVulkanFunctionPointers()->vkGetSwapchainImagesKHRFn
- #define vkQueuePresentKHR gpu::GetVulkanFunctionPointers()->vkQueuePresentKHRFn
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ ALWAYS_INLINE VkResult
+ vkGetSemaphoreFdKHR(VkDevice device,
+                     const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
+@@ -969,7 +969,7 @@ ALWAYS_INLINE VkResult vkImportSemaphoreFdKHR(
+   return gpu::GetVulkanFunctionPointers()->vkImportSemaphoreFdKHR(
+       device, pImportSemaphoreFdInfo);
+ }
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ 
+ #if defined(OS_WIN)
+ ALWAYS_INLINE VkResult vkGetSemaphoreWin32HandleKHR(
+@@ -988,7 +988,7 @@ vkImportSemaphoreWin32HandleKHR(VkDevice device,
+ }
+ #endif  // defined(OS_WIN)
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ ALWAYS_INLINE VkResult vkGetMemoryFdKHR(VkDevice device,
+                                         const VkMemoryGetFdInfoKHR* pGetFdInfo,
+                                         int* pFd) {
+@@ -1003,7 +1003,7 @@ vkGetMemoryFdPropertiesKHR(VkDevice device,
+   return gpu::GetVulkanFunctionPointers()->vkGetMemoryFdPropertiesKHR(
+       device, handleType, fd, pMemoryFdProperties);
+ }
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ 
+ #if defined(OS_WIN)
+ ALWAYS_INLINE VkResult vkGetMemoryWin32HandleKHR(
+@@ -1083,4 +1083,4 @@ ALWAYS_INLINE VkResult vkQueuePresentKHR(VkQueue queue
+                                                              pPresentInfo);
+ }
  
 -#endif  // GPU_VULKAN_VULKAN_FUNCTION_POINTERS_H_
 \ No newline at end of file
 +#endif  // GPU_VULKAN_VULKAN_FUNCTION_POINTERS_H_
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_headless_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_headless_BUILD.gn
deleted file mode 100644
index d496b245ecb4..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_headless_BUILD.gn
+++ /dev/null
@@ -1,56 +0,0 @@
---- src/3rdparty/chromium/headless/BUILD.gn.orig	2020-11-07 01:22:36 UTC
-+++ src/3rdparty/chromium/headless/BUILD.gn
-@@ -276,7 +276,7 @@ jumbo_source_set("headless_shared_sources") {
-   sources += generated_devtools_api
-   sources += get_target_outputs(":protocol_sources")
- 
--  if (!is_fuchsia) {
-+  if (!is_fuchsia && !is_bsd) {
-     sources += [
-       "lib/headless_crash_reporter_client.cc",
-       "lib/headless_crash_reporter_client.h",
-@@ -295,7 +295,7 @@ jumbo_source_set("headless_shared_sources") {
-     "//url",
-   ]
- 
--  if (!is_fuchsia) {
-+  if (!is_fuchsia && !is_bsd) {
-     deps += [ "//components/crash/content/browser" ]
-   }
-   if (is_component_build && is_win) {
-@@ -451,7 +451,7 @@ jumbo_component("headless_non_renderer") {
-       "//v8",
-     ]
- 
--    if (!is_fuchsia) {
-+    if (!is_fuchsia && !is_bsd) {
-       deps += [ "//components/crash/content/browser" ]
-     }
-     if (is_win) {
-@@ -598,7 +598,7 @@ test("headless_unittests") {
-     "//testing/gtest",
-   ]
- 
--  if (!is_fuchsia) {
-+  if (!is_fuchsia && !is_bsd) {
-     deps += [ "//components/crash/content/browser" ]
-   }
- 
-@@ -682,7 +682,7 @@ test("headless_browsertests") {
-     "//ui/base/clipboard",
-   ]
- 
--  if (!is_fuchsia) {
-+  if (!is_fuchsia && !is_bsd) {
-     deps += [ "//components/crash/content/browser" ]
-   }
- 
-@@ -810,7 +810,7 @@ jumbo_static_library("headless_shell_lib") {
-     public_deps += [ ":headless_non_renderer" ]
-   }
- 
--  if (!is_fuchsia) {
-+  if (!is_fuchsia && !is_bsd) {
-     deps += [ "//components/crash/content/browser" ]
-   }
- 
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_headless_lib_browser_headless__content__browser__client.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_headless_lib_browser_headless__content__browser__client.cc
deleted file mode 100644
index fc29f01740e0..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_headless_lib_browser_headless__content__browser__client.cc
+++ /dev/null
@@ -1,29 +0,0 @@
---- src/3rdparty/chromium/headless/lib/browser/headless_content_browser_client.cc.orig	2020-11-07 01:22:36 UTC
-+++ src/3rdparty/chromium/headless/lib/browser/headless_content_browser_client.cc
-@@ -157,7 +157,7 @@ HeadlessContentBrowserClient::GetGeneratedCodeCacheSet
-   return content::GeneratedCodeCacheSettings(true, 0, context->GetPath());
- }
- 
--#if defined(OS_POSIX) && !defined(OS_MACOSX)
-+#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
- void HeadlessContentBrowserClient::GetAdditionalMappedFilesForChildProcess(
-     const base::CommandLine& command_line,
-     int child_process_id,
-@@ -168,7 +168,7 @@ void HeadlessContentBrowserClient::GetAdditionalMapped
-     mappings->Share(service_manager::kCrashDumpSignal, crash_signal_fd);
- #endif  // defined(HEADLESS_USE_BREAKPAD)
- }
--#endif  // defined(OS_POSIX) && !defined(OS_MACOSX)
-+#endif  // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
- 
- void HeadlessContentBrowserClient::AppendExtraCommandLineSwitches(
-     base::CommandLine* command_line,
-@@ -231,7 +231,7 @@ void HeadlessContentBrowserClient::AppendExtraCommandL
-                                             process_type, child_process_id);
-   }
- 
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
-   // Processes may only query perf_event_open with the BPF sandbox disabled.
-   if (old_command_line.HasSwitch(::switches::kEnableThreadInstructionCount) &&
-       old_command_line.HasSwitch(service_manager::switches::kNoSandbox)) {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_headless_lib_browser_headless__content__browser__client.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_headless_lib_browser_headless__content__browser__client.h
deleted file mode 100644
index 8149762c1f44..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_headless_lib_browser_headless__content__browser__client.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/3rdparty/chromium/headless/lib/browser/headless_content_browser_client.h.orig	2019-05-23 12:39:34 UTC
-+++ src/3rdparty/chromium/headless/lib/browser/headless_content_browser_client.h
-@@ -34,7 +34,7 @@ class HeadlessContentBrowserClient : public content::C
-       ::storage::OptionalQuotaSettingsCallback callback) override;
-   content::GeneratedCodeCacheSettings GetGeneratedCodeCacheSettings(
-       content::BrowserContext* context) override;
--#if defined(OS_POSIX) && !defined(OS_MACOSX)
-+#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
-   void GetAdditionalMappedFilesForChildProcess(
-       const base::CommandLine& command_line,
-       int child_process_id,
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_headless_lib_browser_headless__request__context__manager.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_headless_lib_browser_headless__request__context__manager.cc
deleted file mode 100644
index ad33b76c8e1f..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_headless_lib_browser_headless__request__context__manager.cc
+++ /dev/null
@@ -1,29 +0,0 @@
---- src/3rdparty/chromium/headless/lib/browser/headless_request_context_manager.cc.orig	2019-11-27 21:12:25 UTC
-+++ src/3rdparty/chromium/headless/lib/browser/headless_request_context_manager.cc
-@@ -23,7 +23,7 @@ namespace headless {
- 
- namespace {
- 
--#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
- static char kProductName[] = "HeadlessChrome";
- #endif
- 
-@@ -53,7 +53,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;
-@@ -193,7 +193,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/www/qt5-webengine/files/patch-src_3rdparty_chromium_headless_lib_headless__content__main__delegate.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_headless_lib_headless__content__main__delegate.cc
deleted file mode 100644
index 4096c07e657f..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_headless_lib_headless__content__main__delegate.cc
+++ /dev/null
@@ -1,38 +0,0 @@
---- src/3rdparty/chromium/headless/lib/headless_content_main_delegate.cc.orig	2020-11-07 01:22:36 UTC
-+++ src/3rdparty/chromium/headless/lib/headless_content_main_delegate.cc
-@@ -322,7 +322,7 @@ void HeadlessContentMainDelegate::InitCrashReporter(
-     const base::CommandLine& command_line) {
-   if (command_line.HasSwitch(::switches::kDisableBreakpad))
-     return;
--#if defined(OS_FUCHSIA)
-+#if defined(OS_FUCHSIA) || defined(OS_BSD)
-   // TODO(fuchsia): Implement this when crash reporting/Breakpad are available
-   // in Fuchsia. (crbug.com/753619)
-   NOTIMPLEMENTED();
-@@ -351,7 +351,7 @@ void HeadlessContentMainDelegate::InitCrashReporter(
-   crash_reporter::InitializeCrashpadWithEmbeddedHandler(
-       process_type.empty(), process_type, "", base::FilePath());
- #endif  // defined(HEADLESS_USE_BREAKPAD)
--#endif  // defined(OS_FUCHSIA)
-+#endif  // defined(OS_FUCHSIA) || defined(OS_BSD)
- }
- 
- 
-@@ -405,7 +405,7 @@ int HeadlessContentMainDelegate::RunProcess(
- }
- #endif  // !defined(CHROME_MULTIPLE_DLL_CHILD)
- 
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
- void SIGTERMProfilingShutdown(int signal) {
-   content::Profiling::Stop();
-   struct sigaction sigact;
-@@ -440,7 +440,7 @@ void HeadlessContentMainDelegate::ZygoteForked() {
-   breakpad::InitCrashReporter(process_type);
- #endif
- }
--#endif  // defined(OS_LINUX)
-+#endif  // defined(OS_LINUX) || defined(OS_BSD)
- 
- // static
- HeadlessContentMainDelegate* HeadlessContentMainDelegate::GetInstance() {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_headless_lib_headless__content__main__delegate.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_headless_lib_headless__content__main__delegate.h
deleted file mode 100644
index 9db0c5da6b17..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_headless_lib_headless__content__main__delegate.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/3rdparty/chromium/headless/lib/headless_content_main_delegate.h.orig	2019-11-27 21:12:25 UTC
-+++ src/3rdparty/chromium/headless/lib/headless_content_main_delegate.h
-@@ -58,7 +58,7 @@ class HEADLESS_EXPORT HeadlessContentMainDelegate
- 
-   HeadlessBrowserImpl* browser() const { return browser_.get(); }
- 
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
-   void ZygoteForked() override;
- #endif
- 
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_headless_lib_headless__macros.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_headless_lib_headless__macros.h
deleted file mode 100644
index 0cacf68ca091..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_headless_lib_headless__macros.h
+++ /dev/null
@@ -1,13 +0,0 @@
---- src/3rdparty/chromium/headless/lib/headless_macros.h.orig	2018-11-13 18:25:11 UTC
-+++ src/3rdparty/chromium/headless/lib/headless_macros.h
-@@ -7,8 +7,8 @@
- 
- #include "build/build_config.h"
- 
--#if defined(OS_POSIX) && !defined(OS_MACOSX)
-+#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
- #define HEADLESS_USE_BREAKPAD
--#endif  // defined(OS_POSIX) && !defined(OS_MACOSX)
-+#endif  // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
- 
- #endif  // HEADLESS_LIB_HEADLESS_MACROS_H_
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__channel.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__channel.h
index a02c3aba19eb..24a3f2dbebbc 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__channel.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__channel.h
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/ipc/ipc_channel.h.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/ipc/ipc_channel.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ipc/ipc_channel.h
-@@ -244,7 +244,7 @@ class COMPONENT_EXPORT(IPC) Channel : public Sender {
+@@ -245,7 +245,7 @@ class COMPONENT_EXPORT(IPC) Channel : public Sender {
    static std::string GenerateUniqueRandomChannelID();
  #endif
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    // Sandboxed processes live in a PID namespace, so when sending the IPC hello
    // message from client to server we need to send the PID from the global
    // PID namespace.
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__channel__common.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__channel__common.cc
index 5bc6e3b690bd..3ce6c1e3e101 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__channel__common.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__channel__common.cc
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/ipc/ipc_channel_common.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/ipc/ipc_channel_common.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ipc/ipc_channel_common.cc
-@@ -10,7 +10,7 @@
+@@ -10,7 +10,7 @@ namespace IPC {
  
  namespace IPC {
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
  namespace {
  int g_global_pid = 0;
 @@ -26,7 +26,7 @@ int Channel::GetGlobalPid() {
    return g_global_pid;
  }
  
--#endif  // defined(OS_LINUX)
-+#endif  // defined(OS_LINUX) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
  // static
  std::unique_ptr<Channel> Channel::CreateClient(
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__channel__mojo.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__channel__mojo.cc
index 33b019e3f748..1291c9af6b2c 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__channel__mojo.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__channel__mojo.cc
@@ -1,11 +1,15 @@
---- src/3rdparty/chromium/ipc/ipc_channel_mojo.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/ipc/ipc_channel_mojo.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ipc/ipc_channel_mojo.cc
-@@ -64,7 +64,7 @@ class MojoChannelFactory : public ChannelFactory {
+@@ -74,10 +74,10 @@ base::ProcessId GetSelfPID() {
  };
  
  base::ProcessId GetSelfPID() {
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    if (int global_pid = Channel::GetGlobalPid())
      return global_pid;
- #endif  // OS_LINUX
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #if defined(OS_NACL)
+   return -1;
+ #else
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__message__utils.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__message__utils.cc
index 8c8449f7f08b..decda8e66c2f 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__message__utils.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__message__utils.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/ipc/ipc_message_utils.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/ipc/ipc_message_utils.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ipc/ipc_message_utils.cc
-@@ -348,7 +348,7 @@ void ParamTraits<unsigned int>::Log(const param_type& 
+@@ -356,7 +356,7 @@ void ParamTraits<unsigned int>::Log(const param_type& 
    l->append(base::NumberToString(p));
  }
  
--#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_FUCHSIA) || \
-+#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) || defined(OS_FUCHSIA) || \
-     (defined(OS_ANDROID) && defined(ARCH_CPU_64_BITS))
+-#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_FUCHSIA) || (defined(OS_ANDROID) && defined(ARCH_CPU_64_BITS))
  void ParamTraits<long>::Log(const param_type& p, std::string* l) {
    l->append(base::NumberToString(p));
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__message__utils.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__message__utils.h
index 200fda59c907..5bae2a9000eb 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__message__utils.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ipc_ipc__message__utils.h
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/ipc/ipc_message_utils.h.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/ipc/ipc_message_utils.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ipc/ipc_message_utils.h
-@@ -203,7 +203,7 @@ struct ParamTraits<unsigned int> {
+@@ -209,7 +209,7 @@ struct ParamTraits<unsigned int> {
  //   3) Android 64 bit and Fuchsia also have int64_t typedef'd to long.
  // Since we want to support Android 32<>64 bit IPC, as long as we don't have
  // these traits for 32 bit ARM then that'll catch any errors.
--#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_FUCHSIA) || \
-+#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) || defined(OS_FUCHSIA) || \
-     (defined(OS_ANDROID) && defined(ARCH_CPU_64_BITS))
+-#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_FUCHSIA) || (defined(OS_ANDROID) && defined(ARCH_CPU_64_BITS))
  template <>
  struct ParamTraits<long> {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_audio_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_audio_BUILD.gn
index 25b9547160f6..e88f47bef29a 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_audio_BUILD.gn
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_audio_BUILD.gn
@@ -1,22 +1,29 @@
---- src/3rdparty/chromium/media/audio/BUILD.gn.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/media/audio/BUILD.gn.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/media/audio/BUILD.gn
-@@ -240,8 +240,18 @@ source_set("audio") {
-     deps += [ "//media/base/android:media_jni_headers" ]
+@@ -234,7 +234,7 @@ source_set("audio") {
+     ]
    }
  
--  if (is_linux) {
-+  if (is_linux && !use_sndio) {
+-  if (is_linux || is_chromeos) {
++  if ((is_linux || is_chromeos) && !use_sndio) {
      sources += [ "linux/audio_manager_linux.cc" ]
+   }
+ 
+@@ -297,6 +297,17 @@ source_set("audio") {
+     } else {
+       deps += [ ":libpulse_stubs" ]
+     }
 +  }
++
 +  if (use_sndio) {
 +    libs += [ "sndio" ]
 +    sources += [
 +      "openbsd/audio_manager_openbsd.cc",
 +      "sndio/sndio_input.cc",
 +      "sndio/sndio_input.h",
 +      "sndio/sndio_output.cc",
-+      "sndio/sndio_output.h"
++      "sndio/sndio_output.h",
 +    ]
    }
  
-   if (use_alsa) {
+   if (is_fuchsia) {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_audio_alsa_audio__manager__alsa.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_audio_alsa_audio__manager__alsa.cc
index a7c26b66f025..5d009360c9b9 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_audio_alsa_audio__manager__alsa.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_audio_alsa_audio__manager__alsa.cc
@@ -1,54 +1,54 @@
---- src/3rdparty/chromium/media/audio/alsa/audio_manager_alsa.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/media/audio/alsa/audio_manager_alsa.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/media/audio/alsa/audio_manager_alsa.cc
-@@ -93,7 +93,9 @@ void AudioManagerAlsa::GetAlsaAudioDevices(StreamType 
+@@ -89,7 +89,9 @@ void AudioManagerAlsa::GetAlsaAudioDevices(StreamType 
    int card = -1;
  
    // Loop through the sound cards to get ALSA device hints.
-+#ifdef OS_LINUX
++#if defined(OS_LINUX)
    while (!wrapper_->CardNext(&card) && card >= 0) {
 +#endif
      void** hints = NULL;
      int error = wrapper_->DeviceNameHint(card, kPcmInterfaceName, &hints);
      if (!error) {
-@@ -105,7 +107,9 @@ void AudioManagerAlsa::GetAlsaAudioDevices(StreamType 
+@@ -101,7 +103,9 @@ void AudioManagerAlsa::GetAlsaAudioDevices(StreamType 
        DLOG(WARNING) << "GetAlsaAudioDevices: unable to get device hints: "
                      << wrapper_->StrError(error);
      }
-+#ifdef OS_LINUX
++#if defined(OS_LINUX)
    }
 +#endif
  }
  
  void AudioManagerAlsa::GetAlsaDevicesInfo(AudioManagerAlsa::StreamType type,
-@@ -188,7 +192,11 @@ bool AudioManagerAlsa::IsAlsaDeviceAvailable(
+@@ -184,7 +188,11 @@ bool AudioManagerAlsa::IsAlsaDeviceAvailable(
    // goes through software conversion if needed (e.g. incompatible
    // sample rate).
    // TODO(joi): Should we prefer "hw" instead?
 +#ifdef OS_LINUX
    static const char kDeviceTypeDesired[] = "plughw";
 +#else
 +  static const char kDeviceTypeDesired[] = "plug";
 +#endif
    return strncmp(kDeviceTypeDesired, device_name,
-                  arraysize(kDeviceTypeDesired) - 1) == 0;
+                  base::size(kDeviceTypeDesired) - 1) == 0;
  }
-@@ -210,7 +218,9 @@ bool AudioManagerAlsa::HasAnyAlsaAudioDevice(
+@@ -206,7 +214,9 @@ bool AudioManagerAlsa::HasAnyAlsaAudioDevice(
    // Loop through the sound cards.
    // Don't use snd_device_name_hint(-1,..) since there is a access violation
    // inside this ALSA API with libasound.so.2.0.0.
-+#ifdef OS_LINUX
++#if defined(OS_LINUX)
    while (!wrapper_->CardNext(&card) && (card >= 0) && !has_device) {
 +#endif
      int error = wrapper_->DeviceNameHint(card, kPcmInterfaceName, &hints);
      if (!error) {
        for (void** hint_iter = hints; *hint_iter != NULL; hint_iter++) {
-@@ -234,7 +244,9 @@ bool AudioManagerAlsa::HasAnyAlsaAudioDevice(
+@@ -230,7 +240,9 @@ bool AudioManagerAlsa::HasAnyAlsaAudioDevice(
        DLOG(WARNING) << "HasAnyAudioDevice: unable to get device hints: "
                      << wrapper_->StrError(error);
      }
-+#ifdef OS_LINUX
++#if defined(OS_LINUX)
    }
 +#endif
  
    return has_device;
  }
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_audio_audio__features.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_audio_audio__features.cc
index 55c0f4e13ddd..212850d8d219 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_audio_audio__features.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_audio_audio__features.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/media/audio/audio_features.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/media/audio/audio_features.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/media/audio/audio_features.cc
-@@ -11,7 +11,7 @@ namespace features {
+@@ -11,7 +11,7 @@ const base::Feature kAudioServiceOutOfProcessKillAtHan
  // detected. It will be restarted when needed.
  const base::Feature kAudioServiceOutOfProcessKillAtHang{
    "AudioServiceOutOfProcessKillAtHang",
--#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
-+#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || 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)
        base::FEATURE_ENABLED_BY_DEFAULT
  #else
-       base::FEATURE_DISABLED_BY_DEFAULT
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_audio_audio__input__device.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_audio_audio__input__device.cc
index abdee2ffadf6..1c2d2bb40b21 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_audio_audio__input__device.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_audio_audio__input__device.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/media/audio/audio_input_device.cc.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/media/audio/audio_input_device.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/media/audio/audio_input_device.cc
-@@ -248,7 +248,7 @@ void AudioInputDevice::OnStreamCreated(
- // also a risk of false positives if we are suspending when starting the stream
+@@ -253,7 +253,7 @@ void AudioInputDevice::OnStreamCreated(
  // here. See comments in AliveChecker and PowerObserverHelper for details and
  // todos.
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
-   const bool stop_at_first_alive_notification = true;
-   const bool pause_check_during_suspend = false;
+   if (detect_dead_stream_ == DeadStreamDetection::kEnabled) {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+     const bool stop_at_first_alive_notification = true;
+     const bool pause_check_during_suspend = false;
  #else
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_audio_audio__manager.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_audio_audio__manager.cc
index 025eff421ad5..252941eb736d 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_audio_audio__manager.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_audio_audio__manager.cc
@@ -1,29 +1,29 @@
---- src/3rdparty/chromium/media/audio/audio_manager.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/media/audio/audio_manager.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/media/audio/audio_manager.cc
-@@ -94,7 +94,7 @@ class AudioManagerHelper : public base::PowerObserver 
+@@ -48,7 +48,7 @@ class AudioManagerHelper {
    }
  #endif
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    void set_app_name(const std::string& app_name) { app_name_ = app_name; }
    const std::string& app_name() const { return app_name_; }
  #endif
-@@ -229,7 +229,7 @@ class AudioManagerHelper : public base::PowerObserver 
+@@ -59,7 +59,7 @@ class AudioManagerHelper {
    std::unique_ptr<base::win::ScopedCOMInitializer> com_initializer_for_testing_;
  #endif
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    std::string app_name_;
  #endif
  
-@@ -313,7 +313,7 @@ void AudioManager::StartHangMonitorIfNeeded(
-   GetHelper()->StartHangTimer(std::move(task_runner));
+@@ -130,7 +130,7 @@ std::unique_ptr<AudioManager> AudioManager::CreateForT
+   return Create(std::move(audio_thread), GetHelper()->fake_log_factory());
  }
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  // static
  void AudioManager::SetGlobalAppName(const std::string& app_name) {
    GetHelper()->set_app_name(app_name);
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_audio_audio__manager.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_audio_audio__manager.h
index 052c3b0313dc..e7bd059c3168 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_audio_audio__manager.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_audio_audio__manager.h
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/media/audio/audio_manager.h.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/media/audio/audio_manager.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/media/audio/audio_manager.h
-@@ -70,7 +70,7 @@ class MEDIA_EXPORT AudioManager {
-   static void StartHangMonitorIfNeeded(
-       scoped_refptr<base::SingleThreadTaskRunner> task_runner);
+@@ -60,7 +60,7 @@ class MEDIA_EXPORT AudioManager {
+   static std::unique_ptr<AudioManager> CreateForTesting(
+       std::unique_ptr<AudioThread> audio_thread);
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    // Sets the name of the audio source as seen by external apps. Only actually
-   // used with PulseAudio as of this writing.
+   // used with PulseAudio and MPRIS as of this writing.
    static void SetGlobalAppName(const std::string& app_name);
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_base_audio__latency.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_base_audio__latency.cc
index 60f0cc03deaa..b85057d7d88e 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_base_audio__latency.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_base_audio__latency.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/media/base/audio_latency.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/media/base/audio_latency.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/media/base/audio_latency.cc
-@@ -106,7 +106,7 @@ int AudioLatency::GetRtcBufferSize(int sample_rate, in
+@@ -113,7 +113,7 @@ int AudioLatency::GetRtcBufferSize(int sample_rate, in
      return frames_per_buffer;
    }
  
--#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA)
-+#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+-#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_FUCHSIA)
    // On Linux, MacOS and Fuchsia, the low level IO implementations on the
    // browser side supports all buffer size the clients want. We use the native
-   // peer connection buffer size (10ms) to achieve best possible performance.
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_base_media__switches.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_base_media__switches.cc
index 655e73968b37..7fdca1cea0dd 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_base_media__switches.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_base_media__switches.cc
@@ -1,11 +1,20 @@
---- src/3rdparty/chromium/media/base/media_switches.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/media/base/media_switches.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/media/base/media_switches.cc
-@@ -346,7 +346,7 @@ const base::Feature kGav1VideoDecoder{"Gav1VideoDecode
+@@ -361,7 +361,7 @@ const base::Feature kGlobalMediaControls {
  const base::Feature kGlobalMediaControls {
    "GlobalMediaControls",
- #if defined(OS_WIN) || defined(OS_MACOSX) || \
+ #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 kGlobalMediaControlsPictureInPictu
+ 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/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_base_scopedfd__helper.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_base_scopedfd__helper.h
index d43f44cd4c09..bc6cc0f09e20 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_base_scopedfd__helper.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_base_scopedfd__helper.h
@@ -1,23 +1,19 @@
---- src/3rdparty/chromium/media/base/scopedfd_helper.h.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/media/base/scopedfd_helper.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/media/base/scopedfd_helper.h
-@@ -11,17 +11,17 @@
- namespace media {
- 
- // Theoretically, we can test on defined(OS_POSIX) || defined(OS_FUCHSIA), but
--// since the only current user is V4L2 we are limiting the scope to OS_LINUX so
-+// since the only current user is V4L2 we are limiting the scope to OS_LINUX || OS_BSD so
+@@ -14,14 +14,14 @@ namespace media {
+ // since the only current user is V4L2 we are limiting the scope to OS_LINUX so
  // the binary size does not inflate on non-using systems. Feel free to adapt
  // this and BUILD.gn as our needs evolve.
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
  // Return a new vector containing duplicates of |fds|, or PCHECKs in case of an
  // error.
  MEDIA_EXPORT std::vector<base::ScopedFD> DuplicateFDs(
      const std::vector<base::ScopedFD>& fds);
  
--#endif  // OS_LINUX
-+#endif  // OS_LINUX || OS_BSD
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
  }  // namespace media
  
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_base_status.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_base_status.cc
index a01106d43bbe..8163a80d7594 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_base_status.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_base_status.cc
@@ -1,12 +1,12 @@
---- src/3rdparty/chromium/media/base/status.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/media/base/status.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/media/base/status.cc
-@@ -66,7 +66,9 @@ Status&& Status::AddCause(Status&& cause) && {
+@@ -70,7 +70,9 @@ void Status::AddFrame(const base::Location& location) 
  
  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/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_base_video__frame.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_base_video__frame.cc
index 1852a3b25f3a..64ce86596af3 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_base_video__frame.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_base_video__frame.cc
@@ -1,74 +1,83 @@
---- src/3rdparty/chromium/media/base/video_frame.cc.orig	2020-03-16 14:04:24 UTC
+--- src/3rdparty/chromium/media/base/video_frame.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/media/base/video_frame.cc
-@@ -57,7 +57,7 @@ std::string VideoFrame::StorageTypeToString(
+@@ -60,7 +60,7 @@ std::string VideoFrame::StorageTypeToString(
        return "OWNED_MEMORY";
      case VideoFrame::STORAGE_SHMEM:
        return "SHMEM";
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
      case VideoFrame::STORAGE_DMABUFS:
        return "DMABUFS";
  #endif
-@@ -74,7 +74,7 @@ std::string VideoFrame::StorageTypeToString(
+@@ -77,7 +77,7 @@ bool VideoFrame::IsStorageTypeMappable(VideoFrame::Sto
  // static
  bool VideoFrame::IsStorageTypeMappable(VideoFrame::StorageType storage_type) {
    return
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
        // This is not strictly needed but makes explicit that, at VideoFrame
        // level, DmaBufs are not mappable from userspace.
        storage_type != VideoFrame::STORAGE_DMABUFS &&
-@@ -257,7 +257,7 @@ static base::Optional<VideoFrameLayout> GetDefaultLayo
+@@ -262,7 +262,7 @@ static base::Optional<VideoFrameLayout> GetDefaultLayo
    return VideoFrameLayout::CreateWithPlanes(format, coded_size, planes);
  }
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  // 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
-@@ -275,7 +275,7 @@ class VideoFrame::DmabufHolder
+@@ -280,7 +280,7 @@ class VideoFrame::DmabufHolder
    friend class base::RefCountedThreadSafe<DmabufHolder>;
    ~DmabufHolder() = default;
  };
--#endif  // defined(OS_LINUX)
-+#endif  // defined(OS_LINUX) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
  // static
  bool VideoFrame::IsValidConfig(VideoPixelFormat format,
-@@ -588,7 +588,7 @@ scoped_refptr<VideoFrame> VideoFrame::WrapExternalGpuM
+@@ -607,7 +607,7 @@ scoped_refptr<VideoFrame> VideoFrame::WrapExternalGpuM
+   }
+ 
+   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
    return frame;
  }
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  // static
  scoped_refptr<VideoFrame> VideoFrame::WrapExternalDmabufs(
      const VideoFrameLayout& layout,
-@@ -724,7 +724,7 @@ scoped_refptr<VideoFrame> VideoFrame::WrapVideoFrame(
+@@ -847,7 +847,7 @@ scoped_refptr<VideoFrame> VideoFrame::WrapVideoFrame(
      }
    }
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    DCHECK(frame->dmabuf_fds_);
    // If there are any |dmabuf_fds_| plugged in, we should refer them too.
    wrapping_frame->dmabuf_fds_ = frame->dmabuf_fds_;
-@@ -1050,7 +1050,7 @@ VideoFrame::mailbox_holder(size_t texture_index) const
+@@ -1190,7 +1190,7 @@ VideoFrame::mailbox_holder(size_t texture_index) const
                          : mailbox_holders_[texture_index];
  }
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  const std::vector<base::ScopedFD>& VideoFrame::DmabufFds() const {
    DCHECK_EQ(storage_type_, STORAGE_DMABUFS);
  
-@@ -1133,7 +1133,7 @@ VideoFrame::VideoFrame(const VideoFrameLayout& layout,
+@@ -1273,7 +1273,7 @@ VideoFrame::VideoFrame(const VideoFrameLayout& layout,
        storage_type_(storage_type),
        visible_rect_(Intersection(visible_rect, gfx::Rect(layout.coded_size()))),
        natural_size_(natural_size),
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
        dmabuf_fds_(base::MakeRefCounted<DmabufHolder>()),
  #endif
        timestamp_(timestamp),
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_base_video__frame.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_base_video__frame.h
index 1250f8a74c1d..61d4be14a39e 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_base_video__frame.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_base_video__frame.h
@@ -1,50 +1,50 @@
---- src/3rdparty/chromium/media/base/video_frame.h.orig	2020-03-16 14:04:24 UTC
+--- src/3rdparty/chromium/media/base/video_frame.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/media/base/video_frame.h
-@@ -39,9 +39,9 @@
+@@ -41,9 +41,9 @@
  #include "base/mac/scoped_cftyperef.h"
- #endif  // defined(OS_MACOSX)
+ #endif  // defined(OS_MAC)
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include "base/files/scoped_file.h"
--#endif  // defined(OS_LINUX)
-+#endif  // defined(OS_LINUX) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
  namespace gfx {
  class GpuMemoryBuffer;
-@@ -80,7 +80,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
+@@ -83,7 +83,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.
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
      // 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
-@@ -245,7 +245,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
+@@ -260,7 +260,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
        ReleaseMailboxCB mailbox_holder_release_cb,
        base::TimeDelta timestamp);
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    // 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
-@@ -476,7 +476,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
+@@ -507,7 +507,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;
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    // 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
-@@ -662,7 +662,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
+@@ -696,7 +696,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_;
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    class DmabufHolder;
  
    // Dmabufs for the frame, used when storage is STORAGE_DMABUFS. Size is either
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_blink_webmediaplayer__impl.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_blink_webmediaplayer__impl.cc
deleted file mode 100644
index 2c1a72a6e7d9..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_blink_webmediaplayer__impl.cc
+++ /dev/null
@@ -1,15 +0,0 @@
---- src/3rdparty/chromium/media/blink/webmediaplayer_impl.cc.orig	2020-11-07 01:22:36 UTC
-+++ src/3rdparty/chromium/media/blink/webmediaplayer_impl.cc
-@@ -280,7 +280,11 @@ void CreateAllocation(base::trace_event::ProcessMemory
- 
-   auto* std_allocator = base::trace_event::MemoryDumpManager::GetInstance()
-                             ->system_allocator_pool_name();
--  pmd->AddSuballocation(dump->guid(), std_allocator);
-+  if (std_allocator == nullptr) {
-+    pmd->AddSuballocation(dump->guid(), std::string());
-+  } else {
-+    pmd->AddSuballocation(dump->guid(), std_allocator);
-+  }
- }
- 
- }  // namespace
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_create__video__capture__device__factory.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_create__video__capture__device__factory.cc
index 667722536567..e89a19ab9754 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_create__video__capture__device__factory.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_create__video__capture__device__factory.cc
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/media/capture/video/create_video_capture_device_factory.cc.orig	2019-03-07 09:23:57 UTC
+--- src/3rdparty/chromium/media/capture/video/create_video_capture_device_factory.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/media/capture/video/create_video_capture_device_factory.cc
 @@ -10,7 +10,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)
  #include "media/capture/video/linux/video_capture_device_factory_linux.h"
  #elif defined(OS_CHROMEOS)
- #include "media/capture/video/chromeos/public/cros_features.h"
-@@ -31,7 +31,7 @@ namespace {
+ #include "media/capture/video/chromeos/camera_app_device_bridge_impl.h"
+@@ -82,7 +82,7 @@ CreatePlatformSpecificVideoCaptureDeviceFactory(
  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)
    return std::make_unique<VideoCaptureDeviceFactoryLinux>(ui_task_runner);
  #elif defined(OS_CHROMEOS)
-   // On Chrome OS we have to support two use cases:
+   return CreateChromeOSVideoCaptureDeviceFactory(ui_task_runner, {});
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_fake__video__capture__device__factory.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_fake__video__capture__device__factory.cc
index 738f83887ee7..df4b71711a26 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_fake__video__capture__device__factory.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_fake__video__capture__device__factory.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/media/capture/video/fake_video_capture_device_factory.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/media/capture/video/fake_video_capture_device_factory.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/media/capture/video/fake_video_capture_device_factory.cc
-@@ -200,7 +200,7 @@ void FakeVideoCaptureDeviceFactory::GetDeviceDescripto
+@@ -208,7 +208,7 @@ void FakeVideoCaptureDeviceFactory::GetDevicesInfo(
+   int entry_index = 0;
    for (const auto& entry : devices_config_) {
-     device_descriptors->emplace_back(
-         base::StringPrintf("fake_device_%d", entry_index), entry.device_id,
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
-         VideoCaptureApi::LINUX_V4L2_SINGLE_PLANE
- #elif defined(OS_MACOSX)
-         VideoCaptureApi::MACOSX_AVFOUNDATION
+     VideoCaptureApi api =
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+         VideoCaptureApi::LINUX_V4L2_SINGLE_PLANE;
+ #elif defined(OS_MAC)
+         VideoCaptureApi::MACOSX_AVFOUNDATION;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_file__video__capture__device__factory.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_file__video__capture__device__factory.cc
index 86332f519852..6aa602d91dd9 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_file__video__capture__device__factory.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_file__video__capture__device__factory.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/media/capture/video/file_video_capture_device_factory.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/media/capture/video/file_video_capture_device_factory.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/media/capture/video/file_video_capture_device_factory.cc
-@@ -53,7 +53,7 @@ void FileVideoCaptureDeviceFactory::GetDeviceDescripto
- #elif defined(OS_MACOSX)
-       command_line_file_path.value(), kFileVideoCaptureDeviceName,
-       VideoCaptureApi::MACOSX_AVFOUNDATION
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
-       command_line_file_path.value(), kFileVideoCaptureDeviceName,
-       VideoCaptureApi::LINUX_V4L2_SINGLE_PLANE
+@@ -52,7 +52,7 @@ void FileVideoCaptureDeviceFactory::GetDevicesInfo(
+       VideoCaptureApi::WIN_DIRECT_SHOW;
+ #elif defined(OS_MAC)
+       VideoCaptureApi::MACOSX_AVFOUNDATION;
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+       VideoCaptureApi::LINUX_V4L2_SINGLE_PLANE;
  #else
+       VideoCaptureApi::UNKNOWN;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_v4l2__capture__delegate.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_v4l2__capture__delegate.cc
index e055255785d5..5fd752bcd53f 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_v4l2__capture__delegate.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_v4l2__capture__delegate.cc
@@ -1,47 +1,48 @@
---- src/3rdparty/chromium/media/capture/video/linux/v4l2_capture_delegate.cc.orig	2019-03-01 17:04:22 UTC
+--- src/3rdparty/chromium/media/capture/video/linux/v4l2_capture_delegate.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/media/capture/video/linux/v4l2_capture_delegate.cc
 @@ -4,8 +4,10 @@
  
  #include "media/capture/video/linux/v4l2_capture_delegate.h"
  
 +#if !defined(OS_BSD)
  #include <linux/version.h>
  #include <linux/videodev2.h>
 +#endif
  #include <poll.h>
  #include <sys/fcntl.h>
  #include <sys/ioctl.h>
 @@ -13,7 +15,7 @@
  
  #include <utility>
  
 -#if !defined(OS_OPENBSD)
 +#if !defined(OS_BSD)
  #include <linux/version.h>
  #endif
  
-@@ -28,10 +30,10 @@
+@@ -28,10 +30,10 @@ using media::mojom::MeteringMode;
  
  using media::mojom::MeteringMode;
  
 -#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0)
 +// #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0)
  // 16 bit depth, Realsense F200.
  #define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ')
 -#endif
 +// #endif
  
  // TODO(aleksandar.stojiljkovic): Wrap this with kernel version check once the
  // format is introduced to kernel.
-@@ -342,9 +344,9 @@ void V4L2CaptureDelegate::AllocateAndStart(
+@@ -341,9 +343,9 @@ void V4L2CaptureDelegate::AllocateAndStart(
    // operation (|errno| == EINVAL in this case) or plain failure.
    if ((power_line_frequency_ == V4L2_CID_POWER_LINE_FREQUENCY_50HZ)
        || (power_line_frequency_ == V4L2_CID_POWER_LINE_FREQUENCY_60HZ)
 -#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)
-+//#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)
-       || (power_line_frequency_ == V4L2_CID_POWER_LINE_FREQUENCY_AUTO)
+-      || (power_line_frequency_ == V4L2_CID_POWER_LINE_FREQUENCY_AUTO)
 -#endif
++//#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)
++//      || (power_line_frequency_ == V4L2_CID_POWER_LINE_FREQUENCY_AUTO)
 +//#endif
      ) {
      struct v4l2_control control = {};
      control.id = V4L2_CID_POWER_LINE_FREQUENCY;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_video__capture__buffer__pool__impl.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_video__capture__buffer__pool__impl.cc
index 0e5cdf2d9dba..2a790b9207c2 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_video__capture__buffer__pool__impl.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_video__capture__buffer__pool__impl.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/media/capture/video/video_capture_buffer_pool_impl.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/media/capture/video/video_capture_buffer_pool_impl.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/media/capture/video/video_capture_buffer_pool_impl.cc
 @@ -58,7 +58,7 @@ VideoCaptureBufferPoolImpl::CreateSharedMemoryViaRawFi
      int buffer_id) {
  // This requires platforms where base::SharedMemoryHandle is backed by a
  // file descriptor.
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    base::AutoLock lock(lock_);
  
    VideoCaptureBufferTracker* tracker = GetTracker(buffer_id);
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_video__capture__device__client.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_video__capture__device__client.cc
index d0b040943296..176af241f2a7 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_video__capture__device__client.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_video__capture__device__client.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/media/capture/video/video_capture_device_client.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/media/capture/video/video_capture_device_client.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/media/capture/video/video_capture_device_client.cc
-@@ -308,7 +308,7 @@ void VideoCaptureDeviceClient::OnIncomingCapturedData(
+@@ -318,7 +318,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
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
        fourcc_format = libyuv::FOURCC_RAW;
  #elif defined(OS_WIN)
        fourcc_format = libyuv::FOURCC_24BG;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_formats_common_offset__byte__queue.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_formats_common_offset__byte__queue.cc
index c8962872b7a5..62dd7bf5dd7c 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_formats_common_offset__byte__queue.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_formats_common_offset__byte__queue.cc
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/media/formats/common/offset_byte_queue.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/media/formats/common/offset_byte_queue.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/media/formats/common/offset_byte_queue.cc
-@@ -46,13 +46,13 @@ void OffsetByteQueue::PeekAt(int64_t offset, const uin
+@@ -47,13 +47,13 @@ void OffsetByteQueue::PeekAt(int64_t offset, const uin
    *size = tail() - offset;
  }
  
 -bool OffsetByteQueue::Trim(int64_t max_offset) {
 -  if (max_offset < head_) return true;
 -  if (max_offset > tail()) {
 +bool OffsetByteQueue::Trim(int64_t _max_offset) {
 +  if (_max_offset < head_) return true;
 +  if (_max_offset > tail()) {
      Pop(size_);
      return false;
    }
 -  Pop(max_offset - head_);
 +  Pop(_max_offset - head_);
    return true;
  }
  
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_formats_mp2t_es__parser__adts.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_formats_mp2t_es__parser__adts.cc
index 9d13bffdd8ff..a3be52d1ca38 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_formats_mp2t_es__parser__adts.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_formats_mp2t_es__parser__adts.cc
@@ -1,26 +1,26 @@
---- src/3rdparty/chromium/media/formats/mp2t/es_parser_adts.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/media/formats/mp2t/es_parser_adts.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/media/formats/mp2t/es_parser_adts.cc
-@@ -63,11 +63,11 @@ bool EsParserAdts::LookForAdtsFrame(AdtsFrame* adts_fr
+@@ -62,11 +62,11 @@ bool EsParserAdts::LookForAdtsFrame(AdtsFrame* adts_fr
    const uint8_t* es;
    es_queue_->Peek(&es, &es_size);
  
 -  int max_offset = es_size - kADTSHeaderMinSize;
 -  if (max_offset <= 0)
 +  int _max_offset = es_size - kADTSHeaderMinSize;
 +  if (_max_offset <= 0)
      return false;
  
 -  for (int offset = 0; offset < max_offset; offset++) {
 +  for (int offset = 0; offset < _max_offset; offset++) {
      const uint8_t* cur_buf = &es[offset];
      if (!isAdtsSyncWord(cur_buf))
        continue;
-@@ -107,7 +107,7 @@ bool EsParserAdts::LookForAdtsFrame(AdtsFrame* adts_fr
+@@ -106,7 +106,7 @@ bool EsParserAdts::LookForAdtsFrame(AdtsFrame* adts_fr
      return true;
    }
  
 -  es_queue_->Pop(max_offset);
 +  es_queue_->Pop(_max_offset);
    return false;
  }
  
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_gpu_buffer__validation.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_gpu_buffer__validation.cc
index bacd13f50584..bac2e6421b56 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_gpu_buffer__validation.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_gpu_buffer__validation.cc
@@ -1,48 +1,48 @@
---- src/3rdparty/chromium/media/gpu/buffer_validation.cc.orig	2020-03-16 14:04:24 UTC
+--- src/3rdparty/chromium/media/gpu/buffer_validation.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/media/gpu/buffer_validation.cc
 @@ -12,15 +12,15 @@
  #include "ui/gfx/geometry/size.h"
  #include "ui/gfx/gpu_memory_buffer.h"
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include <sys/types.h>
  #include <unistd.h>
--#endif  // defined(OS_LINUX)
-+#endif  // defined(OS_LINUX) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
  namespace media {
  
  bool GetFileSize(const int fd, size_t* size) {
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    if (fd < 0) {
      VLOGF(1) << "Invalid file descriptor";
      return false;
 @@ -46,7 +46,7 @@ bool GetFileSize(const int fd, size_t* size) {
  #else
    NOTIMPLEMENTED();
    return false;
--#endif  // defined(OS_LINUX)
-+#endif  // defined(OS_LINUX) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  }
  
  bool VerifyGpuMemoryBufferHandle(media::VideoPixelFormat pixel_format,
 @@ -56,7 +56,7 @@ bool VerifyGpuMemoryBufferHandle(media::VideoPixelForm
      VLOGF(1) << "Unexpected GpuMemoryBufferType: " << gmb_handle.type;
      return false;
    }
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    const size_t num_planes = media::VideoFrame::NumPlanes(pixel_format);
    if (num_planes != gmb_handle.native_pixmap_handle.planes.size() ||
        num_planes == 0) {
 @@ -108,7 +108,7 @@ bool VerifyGpuMemoryBufferHandle(media::VideoPixelForm
  #else
    NOTIMPLEMENTED();
    return false;
--#endif  // defined(OS_LINUX)
-+#endif  // defined(OS_LINUX) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  }
  
  }  // namespace media
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_media__options.gni b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_media__options.gni
index 2f6341d092ef..9fb87c0aec0b 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_media__options.gni
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_media__options.gni
@@ -1,12 +1,12 @@
---- src/3rdparty/chromium/media/media_options.gni.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/media/media_options.gni.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/media/media_options.gni
-@@ -99,6 +99,9 @@ declare_args() {
+@@ -130,6 +130,9 @@ declare_args() {
    # Enables runtime selection of ALSA library for audio.
    use_alsa = false
  
-+  # Enables runtime selection of sndio library for audio.
++  # Enable runtime selection of sndio(7)
 +  use_sndio = false
 +
    # Alsa should be used on non-Android, non-Mac POSIX systems.
    # Alsa should be used on desktop Chromecast and audio-only Chromecast builds.
    if (is_posix && !is_android && !is_mac &&
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_mojo_clients_mojo__video__encode__accelerator.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_mojo_clients_mojo__video__encode__accelerator.cc
index f44565e54196..82d6d8e51eef 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_mojo_clients_mojo__video__encode__accelerator.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_mojo_clients_mojo__video__encode__accelerator.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/media/mojo/clients/mojo_video_encode_accelerator.cc.orig	2020-03-16 14:04:24 UTC
+--- src/3rdparty/chromium/media/mojo/clients/mojo_video_encode_accelerator.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/media/mojo/clients/mojo_video_encode_accelerator.cc
-@@ -124,7 +124,7 @@ void MojoVideoEncodeAccelerator::Encode(scoped_refptr<
-             frame->layout().num_planes());
+@@ -134,7 +134,7 @@ void MojoVideoEncodeAccelerator::Encode(scoped_refptr<
+   DCHECK_EQ(num_planes, frame->layout().num_planes());
    DCHECK(vea_.is_bound());
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    // TODO(crbug.com/1003197): Remove this once we stop supporting STORAGE_DMABUF
    // in VideoEncodeAccelerator.
    if (frame->storage_type() == VideoFrame::STORAGE_DMABUFS) {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_mojo_mojom_video__frame__mojom__traits.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_mojo_mojom_video__frame__mojom__traits.cc
index 5afda79571de..c8e370fbfccc 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_mojo_mojom_video__frame__mojom__traits.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_mojo_mojom_video__frame__mojom__traits.cc
@@ -1,32 +1,32 @@
---- src/3rdparty/chromium/media/mojo/mojom/video_frame_mojom_traits.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/media/mojo/mojom/video_frame_mojom_traits.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/media/mojo/mojom/video_frame_mojom_traits.cc
-@@ -20,9 +20,9 @@
- #include "ui/gfx/mojom/buffer_types_mojom_traits.h"
+@@ -21,9 +21,9 @@
  #include "ui/gfx/mojom/color_space_mojom_traits.h"
+ #include "ui/gl/mojom/hdr_metadata_mojom_traits.h"
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include "base/posix/eintr_wrapper.h"
--#endif  // defined(OS_LINUX)
-+#endif  // defined(OS_LINUX) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
  namespace mojo {
  
-@@ -62,7 +62,7 @@ media::mojom::VideoFrameDataPtr MakeVideoFrameData(
+@@ -63,7 +63,7 @@ media::mojom::VideoFrameDataPtr MakeVideoFrameData(
              std::move(offsets)));
    }
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    if (input->storage_type() == media::VideoFrame::STORAGE_DMABUFS) {
      std::vector<mojo::PlatformHandle> dmabuf_fds;
  
-@@ -165,7 +165,7 @@ bool StructTraits<media::mojom::VideoFrameDataView,
+@@ -166,7 +166,7 @@ bool StructTraits<media::mojom::VideoFrameDataView,
          shared_buffer_data.TakeFrameData(),
          shared_buffer_data.frame_data_size(), std::move(offsets),
          std::move(strides), timestamp);
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    } else if (data.is_dmabuf_data()) {
      media::mojom::DmabufVideoFrameDataDataView dmabuf_data;
      data.GetDmabufDataDataView(&dmabuf_data);
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_mojo_services_gpu__mojo__media__client.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_mojo_services_gpu__mojo__media__client.cc
index f3a4104080d7..b44dfb6f9af6 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_mojo_services_gpu__mojo__media__client.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_mojo_services_gpu__mojo__media__client.cc
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/media/mojo/services/gpu_mojo_media_client.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/media/mojo/services/gpu_mojo_media_client.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/media/mojo/services/gpu_mojo_media_client.cc
-@@ -62,7 +62,7 @@ namespace media {
+@@ -67,7 +67,7 @@ namespace {
  namespace {
  
- #if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(OS_MACOSX) || \
+ #if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(OS_MAC) || \
 -    defined(OS_WIN) || defined(OS_LINUX)
 +    defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
  gpu::CommandBufferStub* GetCommandBufferStub(
      scoped_refptr<base::SingleThreadTaskRunner> gpu_task_runner,
      base::WeakPtr<MediaGpuChannelManager> media_gpu_channel_manager,
-@@ -279,7 +279,7 @@ std::unique_ptr<VideoDecoder> GpuMojoMediaClient::Crea
+@@ -298,7 +298,7 @@ std::unique_ptr<VideoDecoder> GpuMojoMediaClient::Crea
                                  command_buffer_id->route_id));
        }
  
--#elif defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX)
-+#elif defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+-#elif defined(OS_MAC) || defined(OS_WIN) || defined(OS_LINUX) || \
++#elif defined(OS_MAC) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) || \
+     defined(OS_CHROMEOS)
  #if defined(OS_WIN)
        // Don't instantiate the DXVA decoder if it's not supported.
-       if (gpu_workarounds_.disable_dxva_video_decoder)
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_video_fake__gpu__memory__buffer.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_video_fake__gpu__memory__buffer.cc
index abf65d69a066..a0d87da18902 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_video_fake__gpu__memory__buffer.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_video_fake__gpu__memory__buffer.cc
@@ -1,47 +1,47 @@
---- src/3rdparty/chromium/media/video/fake_gpu_memory_buffer.cc.orig	2020-03-16 14:04:24 UTC
+--- src/3rdparty/chromium/media/video/fake_gpu_memory_buffer.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/media/video/fake_gpu_memory_buffer.cc
-@@ -6,7 +6,7 @@
+@@ -10,7 +10,7 @@
+ #include "media/base/format_utils.h"
+ #include "media/base/video_frame.h"
  
- #include "build/build_config.h"
- 
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include <fcntl.h>
  #include <sys/stat.h>
  #include <sys/types.h>
-@@ -44,7 +44,7 @@ class FakeGpuMemoryBufferImpl : public gpu::GpuMemoryB
+@@ -48,7 +48,7 @@ class FakeGpuMemoryBufferImpl : public gpu::GpuMemoryB
  
  }  // namespace
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  base::ScopedFD GetDummyFD() {
    base::ScopedFD fd(open("/dev/zero", O_RDWR));
    DCHECK(fd.is_valid());
-@@ -67,7 +67,7 @@ FakeGpuMemoryBuffer::FakeGpuMemoryBuffer(const gfx::Si
-   // Set a dummy id since this is for testing only.
-   handle_.id = gfx::GpuMemoryBufferId(0);
+@@ -78,7 +78,7 @@ FakeGpuMemoryBuffer::FakeGpuMemoryBuffer(const gfx::Si
+   static base::NoDestructor<base::AtomicSequenceNumber> buffer_id_generator;
+   handle_.id = gfx::GpuMemoryBufferId(buffer_id_generator->GetNext());
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
-   // Set a dummy fd since this is for testing only.
-   handle_.native_pixmap_handle.planes.push_back(
-       gfx::NativePixmapPlane(size_.width(), 0, y_plane_size, GetDummyFD()));
-@@ -76,7 +76,7 @@ FakeGpuMemoryBuffer::FakeGpuMemoryBuffer(const gfx::Si
-         size_.width(), handle_.native_pixmap_handle.planes[0].size,
-         uv_plane_size, GetDummyFD()));
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   for (size_t i = 0; i < VideoFrame::NumPlanes(video_pixel_format_); i++) {
+     const gfx::Size plane_size_in_bytes =
+         VideoFrame::PlaneSize(video_pixel_format_, i, size_);
+@@ -87,7 +87,7 @@ FakeGpuMemoryBuffer::FakeGpuMemoryBuffer(const gfx::Si
+         GetDummyFD());
    }
--#endif  // defined(OS_LINUX)
-+#endif  // defined(OS_LINUX) || defined(OS_BSD)
+   handle_.native_pixmap_handle.modifier = modifier;
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  }
  
  FakeGpuMemoryBuffer::~FakeGpuMemoryBuffer() = default;
 @@ -135,7 +135,7 @@ gfx::GpuMemoryBufferHandle FakeGpuMemoryBuffer::CloneH
    gfx::GpuMemoryBufferHandle handle;
    handle.type = gfx::NATIVE_PIXMAP;
    handle.id = handle_.id;
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    handle.native_pixmap_handle =
        gfx::CloneHandleForIPC(handle_.native_pixmap_handle);
  #endif
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_video_gpu__memory__buffer__video__frame__pool.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_video_gpu__memory__buffer__video__frame__pool.cc
index dd00223fa48a..319160b52276 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_video_gpu__memory__buffer__video__frame__pool.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_video_gpu__memory__buffer__video__frame__pool.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/media/video/gpu_memory_buffer_video_frame_pool.cc.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/media/video/gpu_memory_buffer_video_frame_pool.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/media/video/gpu_memory_buffer_video_frame_pool.cc
-@@ -633,7 +633,7 @@ void GpuMemoryBufferVideoFramePool::PoolImpl::CreateHa
+@@ -573,7 +573,7 @@ void GpuMemoryBufferVideoFramePool::PoolImpl::CreateHa
    }
  
    bool is_software_backed_video_frame = !video_frame->HasTextures();
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    is_software_backed_video_frame &= !video_frame->HasDmaBufs();
  #endif
  
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_webrtc_webrtc__switches.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_webrtc_webrtc__switches.cc
deleted file mode 100644
index f19a5e3f59ad..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_webrtc_webrtc__switches.cc
+++ /dev/null
@@ -1,18 +0,0 @@
---- src/3rdparty/chromium/media/webrtc/webrtc_switches.cc.orig	2020-03-16 14:04:24 UTC
-+++ src/3rdparty/chromium/media/webrtc/webrtc_switches.cc
-@@ -44,7 +44,7 @@ namespace media {
- 
- bool IsWebRtcApmInAudioServiceEnabled() {
- #if defined(OS_WIN) || defined(OS_MACOSX) || \
--    (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-+    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
-   return base::FeatureList::IsEnabled(features::kWebRtcApmInAudioService) &&
-          !base::CommandLine::ForCurrentProcess()->HasSwitch(
-              switches::kForceDisableWebRtcApmInAudioService);
-@@ -53,4 +53,4 @@ bool IsWebRtcApmInAudioServiceEnabled() {
- #endif
- }
- 
--}  // namespace media
-\ No newline at end of file
-+}  // namespace media
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_mojo_public_c_system_thunks.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_mojo_public_c_system_thunks.cc
index 13d86e7b7993..a28ab88498e4 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_mojo_public_c_system_thunks.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_mojo_public_c_system_thunks.cc
@@ -1,49 +1,46 @@
---- src/3rdparty/chromium/mojo/public/c/system/thunks.cc.orig	2020-04-08 09:41:36 UTC
+--- src/3rdparty/chromium/mojo/public/c/system/thunks.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/mojo/public/c/system/thunks.cc
-@@ -15,7 +15,7 @@
- #include "build/build_config.h"
+@@ -20,7 +20,7 @@
  #include "mojo/public/c/system/core.h"
+ #include "mojo/public/c/system/macros.h"
  
 -#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN)
 +#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
  #include "base/environment.h"
  #include "base/files/file_path.h"
  #include "base/optional.h"
-@@ -58,7 +58,7 @@ namespace mojo {
- class CoreLibraryInitializer {
-  public:
-   CoreLibraryInitializer(const MojoInitializeOptions* options) {
+@@ -68,7 +68,7 @@ class CoreLibraryInitializer {
+   ~CoreLibraryInitializer() = default;
+ 
+   MojoResult LoadLibrary(base::FilePath library_path) {
 -#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN)
 +#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
-     bool application_provided_path = false;
-     base::Optional<base::FilePath> library_path;
-     if (options && options->struct_size >= sizeof(*options) &&
-@@ -77,7 +77,7 @@ class CoreLibraryInitializer {
+     if (library_ && library_->is_valid())
+       return MOJO_RESULT_OK;
+ 
+@@ -82,7 +82,7 @@ class CoreLibraryInitializer {
  
-     if (!library_path) {
+     if (library_path.empty()) {
        // Default to looking for the library in the current working directory.
 -#if defined(OS_CHROMEOS) || defined(OS_LINUX)
 +#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD)
        const base::FilePath::CharType kDefaultLibraryPathValue[] =
            FILE_PATH_LITERAL("./libmojo_core.so");
  #elif defined(OS_WIN)
-@@ -127,16 +127,16 @@ class CoreLibraryInitializer {
+@@ -126,13 +126,13 @@ class CoreLibraryInitializer {
  
-     CHECK_GT(g_thunks.size, 0u)
-         << "Invalid mojo_core library: " << library_path->value();
--#else   // defined(OS_CHROMEOS) || defined(OS_LINUX)
-+#else   // defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD)
-     NOTREACHED()
-         << "Dynamic mojo_core loading is not supported on this platform.";
--#endif  // defined(OS_CHROMEOS) || defined(OS_LINUX)
-+#endif  // defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD)
+     library_ = std::move(library);
+     return MOJO_RESULT_OK;
+-#else   // defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN)
++#else   // defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+     return MOJO_RESULT_UNIMPLEMENTED;
+-#endif  // defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN)
++#endif  // defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
    }
  
-   ~CoreLibraryInitializer() = default;
- 
   private:
 -#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN)
 +#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
    base::Optional<base::ScopedNativeLibrary> library_;
  #endif
- 
+ };
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_mojo_public_js_mojo__bindings__resources.grd b/www/qt5-webengine/files/patch-src_3rdparty_chromium_mojo_public_js_mojo__bindings__resources.grd
index a06c736cb67c..6950925e9274 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_mojo_public_js_mojo__bindings__resources.grd
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_mojo_public_js_mojo__bindings__resources.grd
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/mojo/public/js/mojo_bindings_resources.grd.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/mojo/public/js/mojo_bindings_resources.grd.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/mojo/public/js/mojo_bindings_resources.grd
-@@ -60,7 +60,7 @@
+@@ -59,7 +59,7 @@
+           file="${root_gen_dir}/mojo/public/mojom/base/text_direction.mojom-lite.js"
            use_base_dir="false"
-           type="BINDATA"
-           compress="gzip" />
--      <if expr="is_win or is_macosx or is_linux">
-+      <if expr="is_win or is_macosx or is_posix">
+           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/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_BUILD.gn
index 3bf0855b1be7..8e517e21432c 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_BUILD.gn
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_BUILD.gn
@@ -1,46 +1,55 @@
---- src/3rdparty/chromium/net/BUILD.gn.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/net/BUILD.gn.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/net/BUILD.gn
-@@ -103,7 +103,7 @@ net_configs = [
+@@ -99,7 +99,7 @@ net_configs = [
    "//build/config/compiler:wexit_time_destructors",
  ]
  
--if (is_linux) {
-+if (is_linux && !is_bsd) {
+-if (is_linux || is_chromeos) {
++if ((is_linux || is_chromeos) && !is_bsd) {
    net_configs += [ "//build/config/linux:libresolv" ]
  }
  
-@@ -1256,6 +1256,16 @@ component("net") {
+@@ -1261,6 +1261,16 @@ component("net") {
        ]
      }
  
 +    if (is_bsd) {
 +      sources -= [
 +        "base/address_tracker_linux.cc",
 +        "base/address_tracker_linux.h",
 +        "base/network_change_notifier_linux.cc",
 +        "base/network_change_notifier_linux.h",
 +        "base/network_interfaces_linux.cc"
 +      ]
 +    }
 +
      if (is_mac) {
        sources += [
          "base/network_notification_thread_mac.cc",
-@@ -1386,7 +1396,7 @@ component("net") {
+@@ -1397,7 +1407,7 @@ component("net") {
        }
      }
  
 -    if (is_android || is_chromeos) {
 +    if (is_android || is_chromeos || is_bsd) {
        sources += [
          "base/network_change_notifier_posix.cc",
          "base/network_change_notifier_posix.h",
-@@ -1419,7 +1429,7 @@ component("net") {
+@@ -1430,7 +1440,7 @@ component("net") {
      }
  
-     # Use getifaddrs() on POSIX platforms, except Linux and Android.
--    if (is_posix && !is_linux && !is_android) {
-+    if (is_posix && ((!is_linux && !is_android) || (is_bsd))) {
+     # Use getifaddrs() on POSIX platforms, except Linux.
+-    if (is_posix && !is_linux && !is_chromeos) {
++    if ((is_posix && !is_linux && !is_chromeos) || is_bsd) {
        sources += [
          "base/network_interfaces_getifaddrs.cc",
          "base/network_interfaces_getifaddrs.h",
+@@ -4770,7 +4780,7 @@ test("net_unittests") {
+   }
+ 
+   # Use getifaddrs() on POSIX platforms, except Linux and Android.
+-  if (is_posix && !is_linux && !is_chromeos && !is_android) {
++  if ((is_posix && !is_linux && !is_chromeos && !is_android) || is_bsd) {
+     sources += [ "base/network_interfaces_getifaddrs_unittest.cc" ]
+   }
+ 
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_base_address__tracker__linux.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_base_address__tracker__linux.cc
index ddaeaa1a2a4b..a7841789a45f 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_base_address__tracker__linux.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_base_address__tracker__linux.cc
@@ -1,88 +1,81 @@
---- src/3rdparty/chromium/net/base/address_tracker_linux.cc.orig	2020-04-08 09:41:36 UTC
+--- src/3rdparty/chromium/net/base/address_tracker_linux.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/net/base/address_tracker_linux.cc
 @@ -5,7 +5,9 @@
  #include "net/base/address_tracker_linux.h"
  
  #include <errno.h>
 +#if !defined(OS_BSD)
  #include <linux/if.h>
 +#endif
  #include <stdint.h>
  #include <sys/ioctl.h>
  #include <utility>
-@@ -177,6 +179,7 @@ AddressTrackerLinux::AddressTrackerLinux(
- AddressTrackerLinux::~AddressTrackerLinux() = default;
- 
- void AddressTrackerLinux::Init() {
+@@ -190,6 +192,7 @@ void AddressTrackerLinux::Init() {
+   DCHECK_LT(base::android::BuildInfo::GetInstance()->sdk_int(),
+             base::android::SDK_VERSION_P);
+ #endif
 +#if !defined(OS_FREEBSD)
    netlink_fd_.reset(socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE));
    if (!netlink_fd_.is_valid()) {
      PLOG(ERROR) << "Could not create NETLINK socket";
-@@ -272,6 +275,7 @@ void AddressTrackerLinux::AbortAndForceOnline() {
+@@ -274,6 +277,7 @@ void AddressTrackerLinux::Init() {
+         base::BindRepeating(&AddressTrackerLinux::OnFileCanReadWithoutBlocking,
+                             base::Unretained(this)));
+   }
++#endif // !OS_FREEBSD
+ }
+ 
+ void AddressTrackerLinux::AbortAndForceOnline() {
+@@ -285,6 +289,7 @@ void AddressTrackerLinux::AbortAndForceOnline() {
    connection_type_initialized_cv_.Broadcast();
  }
  
 +#if !defined(OS_BSD)
  AddressTrackerLinux::AddressMap AddressTrackerLinux::GetAddressMap() const {
    AddressTrackerAutoLock lock(*this, address_map_lock_);
    return address_map_;
-@@ -290,6 +294,7 @@ bool AddressTrackerLinux::IsInterfaceIgnored(int inter
+@@ -303,6 +308,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();
  }
 +#endif // !OS_BSD
  
  NetworkChangeNotifier::ConnectionType
  AddressTrackerLinux::GetCurrentConnectionType() {
-@@ -348,6 +353,7 @@ void AddressTrackerLinux::HandleMessage(const char* bu
+@@ -361,6 +367,7 @@ void AddressTrackerLinux::HandleMessage(const char* bu
                                          bool* address_changed,
                                          bool* link_changed,
                                          bool* tunnel_changed) {
 +#if !defined(OS_FREEBSD)
    DCHECK(buffer);
    // Note that NLMSG_NEXT decrements |length| to reflect the number of bytes
    // remaining in |buffer|.
-@@ -460,6 +466,10 @@ void AddressTrackerLinux::HandleMessage(const char* bu
+@@ -473,6 +480,10 @@ void AddressTrackerLinux::HandleMessage(const char* bu
          break;
      }
    }
 +#else  // !OS_FREEBSD
 +  NOTIMPLEMENTED();
 +  AbortAndForceOnline();
 +#endif // !OS_FREEBSD
  }
  
  void AddressTrackerLinux::OnFileCanReadWithoutBlocking() {
-@@ -487,31 +497,7 @@ bool AddressTrackerLinux::IsTunnelInterfaceName(const 
+@@ -500,6 +511,7 @@ void AddressTrackerLinux::UpdateCurrentConnectionType(
  }
  
  void AddressTrackerLinux::UpdateCurrentConnectionType() {
--  AddressTrackerLinux::AddressMap address_map = GetAddressMap();
--  std::unordered_set<int> online_links = GetOnlineLinks();
--
--  // Strip out tunnel interfaces from online_links
--  for (auto it = online_links.cbegin(); it != online_links.cend();) {
--    if (IsTunnelInterface(*it)) {
--      it = online_links.erase(it);
--    } else {
--      ++it;
--    }
--  }
--
--  NetworkInterfaceList networks;
--  NetworkChangeNotifier::ConnectionType type =
--      NetworkChangeNotifier::CONNECTION_NONE;
--  if (GetNetworkListImpl(&networks, 0, online_links, address_map,
--                         get_interface_name_)) {
--    type = NetworkChangeNotifier::ConnectionTypeFromInterfaceList(networks);
--  } else {
--    type = online_links.empty() ? NetworkChangeNotifier::CONNECTION_NONE
--                                : NetworkChangeNotifier::CONNECTION_UNKNOWN;
--  }
--
--  AddressTrackerAutoLock lock(*this, connection_type_lock_);
--  current_connection_type_ = type;
++#if !defined(OS_FREEBSD)
+   AddressTrackerLinux::AddressMap address_map = GetAddressMap();
+   std::unordered_set<int> online_links = GetOnlineLinks();
+ 
+@@ -525,6 +537,9 @@ void AddressTrackerLinux::UpdateCurrentConnectionType(
+ 
+   AddressTrackerAutoLock lock(*this, connection_type_lock_);
+   current_connection_type_ = type;
++#else
 +  NOTIMPLEMENTED();
++#endif
  }
  
  int AddressTrackerLinux::GetThreadsWaitingForConnectionTypeInitForTesting() {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_base_address__tracker__linux__unittest.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_base_address__tracker__linux__unittest.cc
deleted file mode 100644
index da8abb68297c..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_base_address__tracker__linux__unittest.cc
+++ /dev/null
@@ -1,14 +0,0 @@
---- src/3rdparty/chromium/net/base/address_tracker_linux_unittest.cc.orig	2018-11-13 18:25:11 UTC
-+++ src/3rdparty/chromium/net/base/address_tracker_linux_unittest.cc
-@@ -4,7 +4,11 @@
- 
- #include "net/base/address_tracker_linux.h"
- 
-+#if defined(__linux__)
- #include <linux/if.h>
-+#else
-+#include <net/if.h>
-+#endif
- 
- #include <memory>
- #include <unordered_set>
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_base_features.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_base_features.cc
deleted file mode 100644
index d58417fa4064..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_base_features.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/3rdparty/chromium/net/base/features.cc.orig	2020-11-07 01:22:36 UTC
-+++ src/3rdparty/chromium/net/base/features.cc
-@@ -92,7 +92,7 @@ const base::Feature kBlockExternalRequestsFromNonSecur
- #if BUILDFLAG(BUILTIN_CERT_VERIFIER_FEATURE_SUPPORTED)
- const base::Feature kCertVerifierBuiltinFeature {
-   "CertVerifierBuiltin",
--#if defined(OS_CHROMEOS) || defined(OS_LINUX)
-+#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD)
-       base::FEATURE_ENABLED_BY_DEFAULT
- #else
-       base::FEATURE_DISABLED_BY_DEFAULT
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_base_network__change__notifier.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_base_network__change__notifier.cc
index 01306733fbfc..20e8a9dcb595 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_base_network__change__notifier.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_base_network__change__notifier.cc
@@ -1,24 +1,24 @@
---- src/3rdparty/chromium/net/base/network_change_notifier.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/net/base/network_change_notifier.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/net/base/network_change_notifier.cc
-@@ -35,7 +35,7 @@
+@@ -36,7 +36,7 @@
  #include "net/base/network_change_notifier_linux.h"
- #elif defined(OS_MACOSX)
+ #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"
-@@ -240,8 +240,11 @@ std::unique_ptr<NetworkChangeNotifier> NetworkChangeNo
+@@ -249,8 +249,11 @@ std::unique_ptr<NetworkChangeNotifier> NetworkChangeNo
  #elif defined(OS_FUCHSIA)
    return std::make_unique<NetworkChangeNotifierFuchsia>(
-       0 /* required_features */);
+       fuchsia::hardware::ethernet::Features());
 +#elif defined(OS_BSD)
 +  return std::make_unique<MockNetworkChangeNotifier>(
-+		        std::make_unique<SystemDnsConfigChangeNotifier>(
-+				          nullptr /* task_runner */, nullptr /* dns_config_service */));
++      std::make_unique<SystemDnsConfigChangeNotifier>(
++          nullptr /* task_runner */, nullptr /* dns_config_service */));
  #else
 -  NOTIMPLEMENTED();
    return NULL;
  #endif
  }
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_cert_cert__verifier.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_cert_cert__verifier.cc
new file mode 100644
index 000000000000..576afb9f02fe
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_cert_cert__verifier.cc
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/net/cert/cert_verifier.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/net/cert/cert_verifier.cc
+@@ -87,7 +87,7 @@ std::unique_ptr<CertVerifier> CertVerifier::CreateDefa
+   return std::unique_ptr<CertVerifier>();
+ #else
+   scoped_refptr<CertVerifyProc> verify_proc;
+-#if defined(OS_FUCHSIA) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_FUCHSIA) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   verify_proc =
+       CertVerifyProc::CreateBuiltinVerifyProc(std::move(cert_net_fetcher));
+ #elif BUILDFLAG(BUILTIN_CERT_VERIFIER_FEATURE_SUPPORTED)
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_cert_cert__verify__proc.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_cert_cert__verify__proc.cc
new file mode 100644
index 000000000000..8b790f717b5f
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_cert_cert__verify__proc.cc
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/net/cert/cert_verify_proc.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/net/cert/cert_verify_proc.cc
+@@ -493,7 +493,7 @@ base::Value CertVerifyParams(X509Certificate* cert,
+ 
+ }  // namespace
+ 
+-#if !(defined(OS_FUCHSIA) || defined(OS_LINUX) || defined(OS_CHROMEOS))
++#if !(defined(OS_FUCHSIA) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD))
+ // static
+ scoped_refptr<CertVerifyProc> CertVerifyProc::CreateSystemVerifyProc(
+     scoped_refptr<CertNetFetcher> cert_net_fetcher) {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_cert_cert__verify__proc.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_cert_cert__verify__proc.h
new file mode 100644
index 000000000000..ca31bc1d341d
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_cert_cert__verify__proc.h
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/net/cert/cert_verify_proc.h.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/net/cert/cert_verify_proc.h
+@@ -66,7 +66,7 @@ class NET_EXPORT CertVerifyProc
+     kMaxValue = kChainLengthOne
+   };
+ 
+-#if !(defined(OS_FUCHSIA) || defined(OS_LINUX) || defined(OS_CHROMEOS))
++#if !(defined(OS_FUCHSIA) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD))
+   // Creates and returns a CertVerifyProc that uses the system verifier.
+   // |cert_net_fetcher| may not be used, depending on the implementation.
+   static scoped_refptr<CertVerifyProc> CreateSystemVerifyProc(
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_cert_test__root__certs.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_cert_test__root__certs.h
new file mode 100644
index 000000000000..349c5da9e394
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_cert_test__root__certs.h
@@ -0,0 +1,26 @@
+--- src/3rdparty/chromium/net/cert/test_root_certs.h.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/net/cert/test_root_certs.h
+@@ -75,7 +75,7 @@ class NET_EXPORT TestRootCerts {
+   // engine is appropriate. The caller is responsible for freeing the
+   // returned HCERTCHAINENGINE.
+   HCERTCHAINENGINE GetChainEngine() const;
+-#elif defined(OS_FUCHSIA) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_BSD) || defined(OS_FUCHSIA) || defined(OS_LINUX) || defined(OS_CHROMEOS)
+   TrustStore* test_trust_store() { return &test_trust_store_; }
+ #endif
+ 
+@@ -93,12 +93,12 @@ class NET_EXPORT TestRootCerts {
+ #elif defined(OS_APPLE)
+   base::ScopedCFTypeRef<CFMutableArrayRef> temporary_roots_;
+   TrustStoreInMemory test_trust_store_;
+-#elif defined(OS_FUCHSIA) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_BSD) || defined(OS_FUCHSIA) || defined(OS_LINUX) || defined(OS_CHROMEOS)
+   TrustStoreInMemory test_trust_store_;
+ #endif
+ 
+ #if defined(OS_WIN) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || \
+-    defined(OS_LINUX) || defined(OS_CHROMEOS)
++    defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   // True if there are no temporarily trusted root certificates.
+   bool empty_ = true;
+ #endif
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_disk__cache_blockfile_disk__format.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_disk__cache_blockfile_disk__format.h
new file mode 100644
index 000000000000..b1e47548e894
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_disk__cache_blockfile_disk__format.h
@@ -0,0 +1,12 @@
+--- src/3rdparty/chromium/net/disk_cache/blockfile/disk_format.h.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/net/disk_cache/blockfile/disk_format.h
+@@ -149,7 +149,9 @@ struct RankingsNode {
+ };
+ #pragma pack(pop)
+ 
++#if !defined(OS_BSD)
+ static_assert(sizeof(RankingsNode) == 36, "bad RankingsNode");
++#endif
+ 
+ }  // namespace disk_cache
+ 
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_dns_address__sorter__posix.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_dns_address__sorter__posix.cc
index 65d7fe402b48..b184f5a7b6bf 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_dns_address__sorter__posix.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_dns_address__sorter__posix.cc
@@ -1,10 +1,12 @@
---- src/3rdparty/chromium/net/dns/address_sorter_posix.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/net/dns/address_sorter_posix.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/net/dns/address_sorter_posix.cc
-@@ -14,6 +14,7 @@
+@@ -13,7 +13,9 @@
+ #include <sys/socket.h>  // Must be included before ifaddrs.h.
  #include <ifaddrs.h>
  #include <net/if.h>
++#include <net/if_var.h>
  #include <netinet/in_var.h>
 +#include <netinet6/in6_var.h>
  #include <string.h>
  #include <sys/ioctl.h>
  #endif
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_dns_dns__config__service__posix__unittest.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_dns_dns__config__service__posix__unittest.cc
deleted file mode 100644
index 04823baa0fe8..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_dns_dns__config__service__posix__unittest.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/3rdparty/chromium/net/dns/dns_config_service_posix_unittest.cc.orig	2018-11-13 18:25:11 UTC
-+++ src/3rdparty/chromium/net/dns/dns_config_service_posix_unittest.cc
-@@ -2,8 +2,6 @@
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- 
--#include <resolv.h>
--
- #include <memory>
- 
- #include "base/cancelable_callback.h"
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_dns_dns__reloader.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_dns_dns__reloader.cc
index 14e2c63dc34d..3b6137bbdee2 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_dns_dns__reloader.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_dns_dns__reloader.cc
@@ -1,13 +1,13 @@
---- src/3rdparty/chromium/net/dns/dns_reloader.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/net/dns/dns_reloader.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/net/dns/dns_reloader.cc
 @@ -7,6 +7,10 @@
- #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD) && \
+ #if defined(OS_POSIX) && !defined(OS_APPLE) && !defined(OS_OPENBSD) && \
      !defined(OS_ANDROID) && !defined(OS_FUCHSIA)
  
 +#if defined(OS_FREEBSD)
 +#include <netinet/in.h>
 +#endif
 +
  #include <resolv.h>
  
  #include "base/lazy_instance.h"
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_dns_dns__util.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_dns_dns__util.cc
index 01b8768202e9..54eeb6d5f9df 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_dns_dns__util.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_dns_dns__util.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/net/dns/dns_util.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/net/dns/dns_util.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/net/dns/dns_util.cc
-@@ -28,6 +28,8 @@ const int kMaxLabelLength = 63;
+@@ -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/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_dns_host__resolver__proc.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_dns_host__resolver__proc.cc
index 59dd38a1b9b2..3f1751387363 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_dns_host__resolver__proc.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_dns_host__resolver__proc.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/net/dns/host_resolver_proc.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/net/dns/host_resolver_proc.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/net/dns/host_resolver_proc.cc
-@@ -195,7 +195,7 @@ int SystemHostResolverCall(const std::string& host,
-   // current process during that time.
-   base::ScopedBlockingCall scoped_blocking_call(base::BlockingType::WILL_BLOCK);
+@@ -159,7 +159,7 @@ int SystemHostResolverCall(const std::string& host,
+   base::ScopedBlockingCall scoped_blocking_call(FROM_HERE,
+                                                 base::BlockingType::WILL_BLOCK);
  
--#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD) && \
-+#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD) && \
+-#if defined(OS_POSIX) && !defined(OS_APPLE) && !defined(OS_OPENBSD) && \
++#if defined(OS_POSIX) && !defined(OS_APPLE) && !defined(OS_BSD) && \
      !defined(OS_ANDROID) && !defined(OS_FUCHSIA)
    DnsReloaderMaybeReload();
  #endif
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_features.gni b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_features.gni
deleted file mode 100644
index d62b8ce0f9ea..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_features.gni
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/3rdparty/chromium/net/features.gni.orig	2019-05-23 12:39:34 UTC
-+++ src/3rdparty/chromium/net/features.gni
-@@ -27,7 +27,7 @@ declare_args() {
-   disable_brotli_filter = false
- 
-   # Multicast DNS.
--  enable_mdns = is_win || is_linux || is_fuchsia || is_mac || is_ios
-+  enable_mdns = is_win || is_linux || is_fuchsia || is_mac || is_ios || is_bsd
- 
-   # Reporting not used on iOS.
-   enable_reporting = !is_ios
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_http_http__auth__gssapi__posix.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_http_http__auth__gssapi__posix.cc
index e865ad7c429f..c54ba5f6e2f9 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_http_http__auth__gssapi__posix.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_http_http__auth__gssapi__posix.cc
@@ -1,14 +1,14 @@
---- src/3rdparty/chromium/net/http/http_auth_gssapi_posix.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/net/http/http_auth_gssapi_posix.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/net/http/http_auth_gssapi_posix.cc
-@@ -431,8 +431,9 @@ base::NativeLibrary GSSAPISharedLibrary::LoadSharedLib
+@@ -367,8 +367,9 @@ base::NativeLibrary GSSAPISharedLibrary::LoadSharedLib
      static const char* const kDefaultLibraryNames[] = {
- #if defined(OS_MACOSX)
+ #if defined(OS_APPLE)
        "/System/Library/Frameworks/GSS.framework/GSS"
 -#elif defined(OS_OPENBSD)
 -      "libgssapi.so"          // Heimdal - OpenBSD
 +#elif defined(OS_BSD)
-+      "libgssapi.so"          // Heimdal - OpenBSD / FreeBSD
 +      "libgssapi_krb5.so.2",  // MIT Kerberos - FreeBSD
++      "libgssapi.so"          // Heimdal - OpenBSD, FreeBSD
  #else
        "libgssapi_krb5.so.2",  // MIT Kerberos - FC, Suse10, Debian
        "libgssapi.so.4",       // Heimdal - Suse10, MDK
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_nqe_network__quality__estimator.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_nqe_network__quality__estimator.cc
index 761ad39fabf7..c7b2d610934b 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_nqe_network__quality__estimator.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_nqe_network__quality__estimator.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/net/nqe/network_quality_estimator.cc.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/net/nqe/network_quality_estimator.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/net/nqe/network_quality_estimator.cc
-@@ -99,7 +99,7 @@ nqe::internal::NetworkID DoGetCurrentNetworkID() {
+@@ -108,7 +108,7 @@ nqe::internal::NetworkID DoGetCurrentNetworkID(
        case NetworkChangeNotifier::ConnectionType::CONNECTION_ETHERNET:
          break;
        case NetworkChangeNotifier::ConnectionType::CONNECTION_WIFI:
--#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_WIN)
-+#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) || \
+     defined(OS_WIN)
          network_id.id = GetWifiSSID();
  #endif
-         break;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_proxy__resolution_configured__proxy__resolution__service.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_proxy__resolution_configured__proxy__resolution__service.cc
index e5613bb1dda5..a4c1294b1656 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_proxy__resolution_configured__proxy__resolution__service.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_proxy__resolution_configured__proxy__resolution__service.cc
@@ -1,29 +1,29 @@
---- src/3rdparty/chromium/net/proxy_resolution/configured_proxy_resolution_service.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/net/proxy_resolution/configured_proxy_resolution_service.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/net/proxy_resolution/configured_proxy_resolution_service.cc
-@@ -47,7 +47,7 @@
- #elif defined(OS_MACOSX)
+@@ -46,7 +46,7 @@
+ #elif defined(OS_MAC)
  #include "net/proxy_resolution/proxy_config_service_mac.h"
  #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)
  #include "net/proxy_resolution/proxy_config_service_linux.h"
  #elif defined(OS_ANDROID)
  #include "net/proxy_resolution/proxy_config_service_android.h"
-@@ -61,7 +61,7 @@ namespace net {
+@@ -60,7 +60,7 @@ namespace {
  namespace {
  
- #if defined(OS_WIN) || defined(OS_IOS) || defined(OS_MACOSX) || \
+ #if defined(OS_WIN) || defined(OS_APPLE) || \
 -    (defined(OS_LINUX) && !defined(OS_CHROMEOS))
 +    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
  constexpr net::NetworkTrafficAnnotationTag kSystemProxyConfigTrafficAnnotation =
      net::DefineNetworkTrafficAnnotation("proxy_config_system", R"(
        semantics {
-@@ -1436,7 +1436,7 @@ ConfiguredProxyResolutionService::CreateSystemProxyCon
+@@ -1409,7 +1409,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)
    std::unique_ptr<ProxyConfigServiceLinux> linux_config_service(
        new ProxyConfigServiceLinux());
  
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_proxy__resolution_proxy__config__service__linux.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_proxy__resolution_proxy__config__service__linux.cc
index 910f3d1fd87c..3adc66f12657 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_proxy__resolution_proxy__config__service__linux.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_proxy__resolution_proxy__config__service__linux.cc
@@ -1,39 +1,39 @@
---- src/3rdparty/chromium/net/proxy_resolution/proxy_config_service_linux.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/net/proxy_resolution/proxy_config_service_linux.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/net/proxy_resolution/proxy_config_service_linux.cc
 @@ -6,7 +6,9 @@
  
  #include <errno.h>
  #include <limits.h>
 +#if !defined(OS_BSD)
  #include <sys/inotify.h>
 +#endif
  #include <unistd.h>
  
  #include <map>
-@@ -493,6 +495,7 @@ int StringToIntOrDefault(base::StringPiece value, int 
+@@ -511,6 +513,7 @@ int StringToIntOrDefault(base::StringPiece value, int 
    return default_value;
  }
  
 +#if !defined(OS_BSD)
  // This is the KDE version that reads kioslaverc and simulates gsettings.
  // Doing this allows the main Delegate code, as well as the unit tests
  // for it, to stay the same - and the settings map fairly well besides.
-@@ -982,6 +985,7 @@ class SettingGetterImplKDE : public ProxyConfigService
+@@ -1001,6 +1004,7 @@ class SettingGetterImplKDE : public ProxyConfigService
  
    DISALLOW_COPY_AND_ASSIGN(SettingGetterImplKDE);
  };
 +#endif
  
  }  // namespace
  
-@@ -1197,8 +1201,10 @@ ProxyConfigServiceLinux::Delegate::Delegate(
+@@ -1215,8 +1219,10 @@ ProxyConfigServiceLinux::Delegate::Delegate(
      case base::nix::DESKTOP_ENVIRONMENT_KDE3:
      case base::nix::DESKTOP_ENVIRONMENT_KDE4:
      case base::nix::DESKTOP_ENVIRONMENT_KDE5:
 +#if !defined(OS_BSD)
        setting_getter_.reset(new SettingGetterImplKDE(env_var_getter_.get()));
        break;
 +#endif
      case base::nix::DESKTOP_ENVIRONMENT_XFCE:
      case base::nix::DESKTOP_ENVIRONMENT_OTHER:
        break;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_socket_socket__posix.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_socket_socket__posix.cc
index c0639367db7a..a109b8eb957a 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_socket_socket__posix.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_socket_socket__posix.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/net/socket/socket_posix.cc.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/net/socket/socket_posix.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/net/socket/socket_posix.cc
-@@ -568,7 +568,7 @@ void SocketPosix::ReadCompleted() {
+@@ -517,7 +517,7 @@ int SocketPosix::DoWrite(IOBuffer* buf, int buf_len) {
  }
  
  int SocketPosix::DoWrite(IOBuffer* buf, int buf_len) {
--#if defined(OS_LINUX) || defined(OS_ANDROID)
-+#if defined(OS_LINUX) || 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)
    // Disable SIGPIPE for this write. Although Chromium globally disables
    // SIGPIPE, the net stack may be used in other consumers which do not do
    // this. MSG_NOSIGNAL is a Linux-only API. On OS X, this is a setsockopt on
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_socket_socks5__client__socket.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_socket_socks5__client__socket.cc
index 3d468c0fbe88..345e2558fca2 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_socket_socks5__client__socket.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_socket_socks5__client__socket.cc
@@ -1,13 +1,13 @@
---- src/3rdparty/chromium/net/socket/socks5_client_socket.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/net/socket/socks5_client_socket.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/net/socket/socks5_client_socket.cc
 @@ -4,6 +4,10 @@
  
  #include "net/socket/socks5_client_socket.h"
  
 +#if defined(OS_BSD)
 +#include <netinet/in.h>
 +#endif
 +
  #include <utility>
  
- #include "base/callback_helpers.h"
+ #include "base/bind.h"
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_socket_udp__socket__posix.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_socket_udp__socket__posix.cc
index e580aaa0d164..116c9280ec07 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_socket_udp__socket__posix.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_socket_udp__socket__posix.cc
@@ -1,115 +1,82 @@
---- src/3rdparty/chromium/net/socket/udp_socket_posix.cc.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/net/socket/udp_socket_posix.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/net/socket/udp_socket_posix.cc
-@@ -68,7 +68,7 @@ const int kActivityMonitorMinimumSamplesForThroughputE
+@@ -70,6 +70,32 @@ const base::TimeDelta kActivityMonitorMsThreshold =
  const base::TimeDelta kActivityMonitorMsThreshold =
      base::TimeDelta::FromMilliseconds(100);
  
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_BSD)
- // When enabling multicast using setsockopt(IP_MULTICAST_IF) MacOS
- // requires passing IPv4 address instead of interface index. This function
- // resolves IPv4 address by interface index. The |address| is returned in
-@@ -97,7 +97,7 @@ int GetIPv4AddressFromIndex(int socket, uint32_t index
-   return OK;
- }
- 
--#endif  // OS_MACOSX
-+#endif  // OS_MACOSX || OS_BSD
- 
- #if defined(OS_MACOSX) && !defined(OS_IOS)
++#if defined(OS_BSD)
++int GetIPv4AddressFromIndex(int socket, uint32_t index, uint32_t* address) {
++  if (!index) {
++    *address = htonl(INADDR_ANY);
++    return OK;
++  }
++
++  sockaddr_in* result = nullptr;
++
++  ifreq ifr;
++  ifr.ifr_addr.sa_family = AF_INET;
++  if (!if_indextoname(index, ifr.ifr_name))
++    return MapSystemError(errno);
++  int rv = ioctl(socket, SIOCGIFADDR, &ifr);
++  if (rv == -1)
++    return MapSystemError(errno);
++  result = reinterpret_cast<sockaddr_in*>(&ifr.ifr_addr);
++
++  if (!result)
++    return ERR_ADDRESS_INVALID;
++
++  *address = result->sin_addr.s_addr;
++  return OK;
++}
++#endif
++
+ #if defined(OS_MAC)
  
-@@ -644,13 +644,13 @@ int UDPSocketPosix::SetDoNotFragment() {
+ // On OSX the file descriptor is guarded to detect the cause of
+@@ -622,13 +648,13 @@ void UDPSocketPosix::SetMsgConfirm(bool confirm) {
  }
  
  void UDPSocketPosix::SetMsgConfirm(bool confirm) {
--#if !defined(OS_MACOSX) && !defined(OS_IOS)
-+#if !defined(OS_MACOSX) && !defined(OS_IOS) && !defined(OS_BSD)
+-#if !defined(OS_APPLE)
++#if !defined(OS_APPLE) && !defined(OS_BSD)
    if (confirm) {
      sendto_flags_ |= MSG_CONFIRM;
    } else {
      sendto_flags_ &= ~MSG_CONFIRM;
    }
--#endif  // !defined(OS_MACOSX) && !defined(OS_IOS)
-+#endif  // !defined(OS_MACOSX) && !defined(OS_IOS) && !defined(OS_BSD)
+-#endif  // !defined(OS_APPLE)
++#endif  // !defined(OS_APPLE) && !defined(OS_BSD)
  }
  
  int UDPSocketPosix::AllowAddressReuse() {
-@@ -665,17 +665,20 @@ int UDPSocketPosix::SetBroadcast(bool broadcast) {
-   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
-   int value = broadcast ? 1 : 0;
-   int rv;
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_BSD)
-   // SO_REUSEPORT on OSX permits multiple processes to each receive
-   // UDP multicast or broadcast datagrams destined for the bound
-   // port.
-   // This is only being set on OSX because its behavior is platform dependent
-   // and we are playing it safe by only setting it on platforms where things
-   // break.
-+  rv = setsockopt(socket_, SOL_SOCKET, SO_REUSEADDR, &value, sizeof(value));
-+  if (rv != 0)
-+    return MapSystemError(errno);
-   rv = setsockopt(socket_, SOL_SOCKET, SO_REUSEPORT, &value, sizeof(value));
-   if (rv != 0)
-     return MapSystemError(errno);
--#endif  // defined(OS_MACOSX)
-+#endif  // defined(OS_MACOSX) || defined(OS_BSD)
-   rv = setsockopt(socket_, SOL_SOCKET, SO_BROADCAST, &value, sizeof(value));
- 
-   return rv == 0 ? OK : MapSystemError(errno);
-@@ -937,19 +940,24 @@ int UDPSocketPosix::SetMulticastOptions() {
-   if (multicast_interface_ != 0) {
-     switch (addr_family_) {
-       case AF_INET: {
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_BSD)
-         ip_mreq mreq = {};
-         int error = GetIPv4AddressFromIndex(socket_, multicast_interface_,
-                                             &mreq.imr_interface.s_addr);
-         if (error != OK)
-           return error;
--#else   //  defined(OS_MACOSX)
-+#else   //  defined(OS_MACOSX) || defined(OS_BSD)
-         ip_mreqn mreq = {};
+@@ -917,7 +943,11 @@ int UDPSocketPosix::SetMulticastOptions() {
          mreq.imr_ifindex = multicast_interface_;
          mreq.imr_address.s_addr = htonl(INADDR_ANY);
--#endif  //  !defined(OS_MACOSX)
-+#endif  //  !defined(OS_MACOSX) || defined(OS_BSD)
          int rv = setsockopt(socket_, IPPROTO_IP, IP_MULTICAST_IF,
 +#if defined(OS_BSD)
-+                            reinterpret_cast<const char*>(&mreq.imr_interface.s_addr),
-+                            sizeof(mreq.imr_interface.s_addr));
++                            reinterpret_cast<const char*>(&mreq.imr_address.s_addr), sizeof(mreq.imr_address.s_addr));
 +#else
                              reinterpret_cast<const char*>(&mreq), sizeof(mreq));
 +#endif
          if (rv)
            return MapSystemError(errno);
          break;
-@@ -1011,7 +1019,7 @@ int UDPSocketPosix::JoinGroup(const IPAddress& group_a
-       if (addr_family_ != AF_INET)
-         return ERR_ADDRESS_INVALID;
- 
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_BSD)
-       ip_mreq mreq = {};
-       int error = GetIPv4AddressFromIndex(socket_, multicast_interface_,
-                                           &mreq.imr_interface.s_addr);
-@@ -1059,9 +1067,18 @@ int UDPSocketPosix::LeaveGroup(const IPAddress& group_
+@@ -1018,9 +1048,18 @@ int UDPSocketPosix::LeaveGroup(const IPAddress& group_
      case IPAddress::kIPv4AddressSize: {
        if (addr_family_ != AF_INET)
          return ERR_ADDRESS_INVALID;
 +#if defined(OS_BSD)
 +      ip_mreq mreq = {};
 +      int error = GetIPv4AddressFromIndex(socket_, multicast_interface_,
 +                                          &mreq.imr_interface.s_addr);
 +
 +      if (error != OK)
 +        return error;
 +#else
        ip_mreqn mreq = {};
        mreq.imr_ifindex = multicast_interface_;
        mreq.imr_address.s_addr = INADDR_ANY;
 +#endif
        memcpy(&mreq.imr_multiaddr, group_address.bytes().data(),
               IPAddress::kIPv4AddressSize);
        int rv = setsockopt(socket_, IPPROTO_IP, IP_DROP_MEMBERSHIP,
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_socket_udp__socket__posix.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_socket_udp__socket__posix.h
index 14b859f71923..3fdb94e19af4 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_socket_udp__socket__posix.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_socket_udp__socket__posix.h
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/net/socket/udp_socket_posix.h.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/net/socket/udp_socket_posix.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/net/socket/udp_socket_posix.h
-@@ -33,7 +33,7 @@
+@@ -35,7 +35,7 @@
  
  #if defined(__ANDROID__) && defined(__aarch64__)
  #define HAVE_SENDMMSG 1
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #define HAVE_SENDMMSG 1
  #else
  #define HAVE_SENDMMSG 0
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_socket_unix__domain__client__socket__posix.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_socket_unix__domain__client__socket__posix.cc
index f1a851f7b85a..83caf2eb26ed 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_socket_unix__domain__client__socket__posix.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_socket_unix__domain__client__socket__posix.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/net/socket/unix_domain_client_socket_posix.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/net/socket/unix_domain_client_socket_posix.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/net/socket/unix_domain_client_socket_posix.cc
-@@ -56,7 +56,7 @@ bool UnixDomainClientSocket::FillAddress(const std::st
+@@ -57,7 +57,7 @@ bool UnixDomainClientSocket::FillAddress(const std::st
      return true;
    }
  
--#if defined(OS_ANDROID) || defined(OS_LINUX)
-+#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    // Convert the path given into abstract socket name. It must start with
    // the '\0' character, so we are adding it. |addr_len| must specify the
    // length of the structure exactly, as potentially the socket name may
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_tools_cert__verify__tool_cert__verify__tool.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_tools_cert__verify__tool_cert__verify__tool.cc
index 180bbe9d97f8..74113d99bf16 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_tools_cert__verify__tool_cert__verify__tool.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_tools_cert__verify__tool_cert__verify__tool.cc
@@ -1,20 +1,29 @@
---- src/3rdparty/chromium/net/tools/cert_verify_tool/cert_verify_tool.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/net/tools/cert_verify_tool/cert_verify_tool.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/net/tools/cert_verify_tool/cert_verify_tool.cc
-@@ -26,7 +26,7 @@
+@@ -29,7 +29,7 @@
  #include "net/url_request/url_request_context_builder.h"
  #include "net/url_request/url_request_context_getter.h"
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include "net/proxy_resolution/proxy_config.h"
  #include "net/proxy_resolution/proxy_config_service_fixed.h"
  #endif
-@@ -45,7 +45,7 @@ void SetUpOnNetworkThread(std::unique_ptr<net::URLRequ
-                           base::WaitableEvent* initialization_complete_event) {
+@@ -46,7 +46,7 @@ void SetUpOnNetworkThread(
+     base::WaitableEvent* initialization_complete_event) {
    net::URLRequestContextBuilder url_request_context_builder;
    url_request_context_builder.set_user_agent(GetUserAgent());
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    // On Linux, use a fixed ProxyConfigService, since the default one
    // depends on glib.
    //
+@@ -192,7 +192,7 @@ std::unique_ptr<CertVerifyImpl> CreateCertVerifyImplFr
+     base::StringPiece impl_name,
+     scoped_refptr<net::CertNetFetcher> cert_net_fetcher,
+     bool use_system_roots) {
+-#if !(defined(OS_FUCHSIA) || defined(OS_LINUX) || defined(OS_CHROMEOS))
++#if !(defined(OS_FUCHSIA) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD))
+   if (impl_name == "platform") {
+     if (!use_system_roots) {
+       std::cerr << "WARNING: platform verifier not supported with "
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_tools_quic_quic__http__proxy__backend.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_tools_quic_quic__http__proxy__backend.cc
index a3b220eda37c..5348d54c24c0 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_tools_quic_quic__http__proxy__backend.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_tools_quic_quic__http__proxy__backend.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/net/tools/quic/quic_http_proxy_backend.cc.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/net/tools/quic/quic_http_proxy_backend.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/net/tools/quic/quic_http_proxy_backend.cc
-@@ -160,7 +160,7 @@ void QuicHttpProxyBackend::InitializeURLRequestContext
+@@ -162,7 +162,7 @@ void QuicHttpProxyBackend::InitializeURLRequestContext
    // Enable HTTP2, but disable QUIC on the backend
    context_builder.SetSpdyAndQuicEnabled(true /* http2 */, false /* quic */);
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    // On Linux, use a fixed ProxyConfigService, since the default one
    // depends on glib.
    context_builder.set_proxy_config_service(
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_traffic__annotation_network__traffic__annotation.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_traffic__annotation_network__traffic__annotation.h
index f2907ce0a88b..5a2e0a735285 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_traffic__annotation_network__traffic__annotation.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_traffic__annotation_network__traffic__annotation.h
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/net/traffic_annotation/network_traffic_annotation.h.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/net/traffic_annotation/network_traffic_annotation.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/net/traffic_annotation/network_traffic_annotation.h
-@@ -356,7 +356,7 @@ struct MutablePartialNetworkTrafficAnnotationTag {
+@@ -359,7 +359,7 @@ struct MutablePartialNetworkTrafficAnnotationTag {
  }  // namespace net
  
  // Placeholder for unannotated usages.
 -#if !defined(OS_WIN) && !defined(OS_LINUX) && !defined(OS_CHROMEOS)
 +#if !defined(OS_WIN) && !defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_BSD)
  #define TRAFFIC_ANNOTATION_WITHOUT_PROTO(ANNOTATION_ID) \
    net::DefineNetworkTrafficAnnotation(ANNOTATION_ID, "No proto yet.")
  #endif
-@@ -367,7 +367,7 @@ struct MutablePartialNetworkTrafficAnnotationTag {
+@@ -370,7 +370,7 @@ struct MutablePartialNetworkTrafficAnnotationTag {
  //
  // On Linux and Windows, use MISSING_TRAFFIC_ANNOTATION or
  // 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)
  #define NO_TRAFFIC_ANNOTATION_YET \
    net::DefineNetworkTrafficAnnotation("undefined", "Nothing here yet.")
  
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__fetcher.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__fetcher.cc
index bd7453b18da3..a71ffda1d17b 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__fetcher.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__fetcher.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/net/url_request/url_fetcher.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/net/url_request/url_fetcher.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/net/url_request/url_fetcher.cc
-@@ -11,7 +11,7 @@ namespace net {
- 
- URLFetcher::~URLFetcher() = default;
+@@ -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/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__fetcher.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__fetcher.h
index d1fa6c39daf1..d8e2a2df15a1 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__fetcher.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__fetcher.h
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/net/url_request/url_fetcher.h.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/net/url_request/url_fetcher.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/net/url_request/url_fetcher.h
-@@ -113,7 +113,7 @@ class NET_EXPORT URLFetcher {
+@@ -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/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__request__context.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__request__context.cc
index 91c36c440cf1..a2216b747474 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__request__context.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__request__context.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/net/url_request/url_request_context.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/net/url_request/url_request_context.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/net/url_request/url_request_context.cc
-@@ -89,7 +89,7 @@ const HttpNetworkSession::Context* URLRequestContext::
+@@ -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/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__request__context.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__request__context.h
index 13e2f80df8f0..d09e22c375de 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__request__context.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__request__context.h
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/net/url_request/url_request_context.h.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/net/url_request/url_request_context.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/net/url_request/url_request_context.h
-@@ -90,7 +90,7 @@ class NET_EXPORT URLRequestContext
+@@ -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/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__request__context__builder.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__request__context__builder.cc
index 4782f8eec2d5..d07c18ce4c24 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__request__context__builder.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_url__request_url__request__context__builder.cc
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/net/url_request/url_request_context_builder.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/net/url_request/url_request_context_builder.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/net/url_request/url_request_context_builder.cc
-@@ -485,7 +485,7 @@ std::unique_ptr<URLRequestContext> URLRequestContextBu
+@@ -497,7 +497,7 @@ std::unique_ptr<URLRequestContext> URLRequestContextBu
    }
  
    if (!proxy_resolution_service_) {
--#if !defined(OS_LINUX) && !defined(OS_ANDROID)
-+#if !defined(OS_LINUX) && !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)
      // TODO(willchan): Switch to using this code when
      // ConfiguredProxyResolutionService::CreateSystemProxyConfigService()'s
      // signature doesn't suck.
-@@ -494,7 +494,7 @@ std::unique_ptr<URLRequestContext> URLRequestContextBu
+@@ -506,7 +506,7 @@ std::unique_ptr<URLRequestContext> URLRequestContextBu
            ConfiguredProxyResolutionService::CreateSystemProxyConfigService(
                base::ThreadTaskRunnerHandle::Get().get());
      }
--#endif  // !defined(OS_LINUX) && !defined(OS_ANDROID)
-+#endif  // !defined(OS_LINUX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+-#endif  // !defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID)
++#endif  // !defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID) && !defined(OS_BSD)
      proxy_resolution_service_ = CreateProxyResolutionService(
          std::move(proxy_config_service_), context.get(),
          context->host_resolver(), context->network_delegate(),
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_pdf_pdfium_pdfium__engine.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_pdf_pdfium_pdfium__engine.cc
index 2994c665f947..184339c94df9 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_pdf_pdfium_pdfium__engine.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_pdf_pdfium_pdfium__engine.cc
@@ -1,56 +1,56 @@
---- src/3rdparty/chromium/pdf/pdfium/pdfium_engine.cc.orig	2020-03-16 14:04:24 UTC
+--- src/3rdparty/chromium/pdf/pdfium/pdfium_engine.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/pdf/pdfium/pdfium_engine.cc
-@@ -52,7 +52,7 @@
- #include "ui/gfx/geometry/rect.h"
+@@ -69,7 +69,7 @@
+ #include "ui/gfx/geometry/vector2d.h"
  #include "v8/include/v8.h"
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include "pdf/pdfium/pdfium_font_linux.h"
  #endif
  
-@@ -377,7 +377,7 @@ void InitializeSDK(bool enable_v8) {
-   config.m_v8EmbedderSlot = gin::kEmbedderPDFium;
+@@ -416,7 +416,7 @@ void InitializeSDK(bool enable_v8) {
+ 
    FPDF_InitLibraryWithConfig(&config);
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    InitializeLinuxFontMapper();
  #endif
  
-@@ -411,7 +411,7 @@ PDFiumEngine::PDFiumEngine(PDFEngine::Client* client, 
+@@ -475,7 +475,7 @@ PDFiumEngine::PDFiumEngine(PDFEngine::Client* client,
    IFSDK_PAUSE::user = nullptr;
    IFSDK_PAUSE::NeedToPauseNow = Pause_NeedToPauseNow;
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    // PreviewModeClient does not know its pp::Instance.
    SetLastInstance(client_->GetPluginInstance());
  #endif
-@@ -867,7 +867,7 @@ pp::Buffer_Dev PDFiumEngine::PrintPagesAsRasterPdf(
+@@ -948,7 +948,7 @@ pp::Buffer_Dev PDFiumEngine::PrintPagesAsRasterPdf(
  
    KillFormFocus();
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    SetLastInstance(client_->GetPluginInstance());
  #endif
  
-@@ -2798,7 +2798,7 @@ bool PDFiumEngine::ContinuePaint(int progressive_index
-   DCHECK(image_data);
+@@ -3041,7 +3041,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();
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    SetLastInstance(client_->GetPluginInstance());
  #endif
  
-@@ -3292,7 +3292,7 @@ void PDFiumEngine::SetCurrentPage(int index) {
+@@ -3529,7 +3529,7 @@ void PDFiumEngine::SetCurrentPage(int index) {
      FORM_DoPageAAction(old_page, form(), FPDFPAGE_AACTION_CLOSE);
    }
    most_visible_page_ = index;
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    SetLastInstance(client_->GetPluginInstance());
  #endif
    if (most_visible_page_ != -1 && called_do_document_action_) {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ppapi_proxy_flash__resource.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ppapi_proxy_flash__resource.cc
index 4ae92fb839ff..258733f01265 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ppapi_proxy_flash__resource.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ppapi_proxy_flash__resource.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/ppapi/proxy/flash_resource.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/ppapi/proxy/flash_resource.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/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_MACOSX)
-+#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+-#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/www/qt5-webengine/files/patch-src_3rdparty_chromium_sandbox_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_sandbox_BUILD.gn
new file mode 100644
index 000000000000..90720ea28f6a
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_sandbox_BUILD.gn
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/sandbox/BUILD.gn.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/sandbox/BUILD.gn
+@@ -27,7 +27,7 @@ group("sandbox") {
+       "//sandbox/mac:system_services",
+       "//sandbox/mac/mojom",
+     ]
+-  } else if (is_linux || is_chromeos || is_android) {
++  } else if ((is_linux || is_chromeos || is_android) && !is_bsd) {
+     public_deps = [ "//sandbox/linux:sandbox" ]
+   }
+ }
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_sandbox_features.gni b/www/qt5-webengine/files/patch-src_3rdparty_chromium_sandbox_features.gni
index 7b7aedad63aa..565b8e3dbf54 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_sandbox_features.gni
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_sandbox_features.gni
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/sandbox/features.gni.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/sandbox/features.gni.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/sandbox/features.gni
 @@ -8,7 +8,7 @@ import("//build/config/nacl/config.gni")
  # currently.
  # Do not disable seccomp_bpf anywhere without talking to
  # security@chromium.org!
--use_seccomp_bpf = (is_linux || is_android) &&
-+use_seccomp_bpf = (is_linux || is_android) && !is_bsd &&
+-use_seccomp_bpf = (is_linux || is_chromeos || is_android) &&
++use_seccomp_bpf = (is_linux || is_chromeos || is_android) && !is_bsd &&
                    (current_cpu == "x86" || current_cpu == "x64" ||
                     current_cpu == "arm" || current_cpu == "arm64" ||
                     current_cpu == "mipsel" || current_cpu == "mips64el")
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_sandbox_linux_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_sandbox_linux_BUILD.gn
index d2ef04ebac8a..317e2c8b1fed 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_sandbox_linux_BUILD.gn
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_sandbox_linux_BUILD.gn
@@ -1,47 +1,20 @@
---- src/3rdparty/chromium/sandbox/linux/BUILD.gn.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/sandbox/linux/BUILD.gn.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/sandbox/linux/BUILD.gn
-@@ -12,12 +12,12 @@ if (is_android) {
- }
- 
- declare_args() {
--  compile_suid_client = is_linux
-+  compile_suid_client = is_linux && !is_bsd
- 
--  compile_credentials = is_linux
-+  compile_credentials = is_linux && !is_bsd
- 
-   # On Android, use plain GTest.
--  use_base_test_suite = is_linux
-+  use_base_test_suite = is_linux && !is_bsd
- }
- 
- if (is_nacl_nonsfi) {
-@@ -398,7 +398,7 @@ component("sandbox_services") {
+@@ -386,7 +386,7 @@ component("sandbox_services") {
      public_deps += [ ":sandbox_services_headers" ]
    }
  
 -  if (is_nacl_nonsfi) {
 +  if (is_nacl_nonsfi || is_bsd) {
      cflags = [ "-fgnu-inline-asm" ]
  
      sources -= [
-@@ -406,6 +406,8 @@ component("sandbox_services") {
+@@ -394,6 +394,8 @@ component("sandbox_services") {
        "services/init_process_reaper.h",
        "services/scoped_process.cc",
        "services/scoped_process.h",
 +      "services/syscall_wrappers.cc",
 +      "services/syscall_wrappers.h",
        "services/yama.cc",
        "services/yama.h",
        "syscall_broker/broker_channel.cc",
-@@ -424,6 +426,10 @@ component("sandbox_services") {
-       "syscall_broker/broker_process.h",
-       "syscall_broker/broker_simple_message.cc",
-       "syscall_broker/broker_simple_message.h",
-+    ]
-+    sources += [
-+      "services/libc_interceptor.cc",
-+      "services/libc_interceptor.h",
-     ]
-   } else if (!is_android) {
-     sources += [
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_sandbox_linux_services_libc__interceptor.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_sandbox_linux_services_libc__interceptor.cc
index 7e4c052fc7cd..4b0879072797 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_sandbox_linux_services_libc__interceptor.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_sandbox_linux_services_libc__interceptor.cc
@@ -1,21 +1,21 @@
---- src/3rdparty/chromium/sandbox/linux/services/libc_interceptor.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/sandbox/linux/services/libc_interceptor.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/sandbox/linux/services/libc_interceptor.cc
 @@ -11,7 +11,9 @@
  #include <stddef.h>
  #include <stdint.h>
  #include <string.h>
 +#if !defined(OS_BSD)
  #include <sys/prctl.h>
 +#endif
  #include <sys/socket.h>
  #include <sys/types.h>
  #include <time.h>
-@@ -94,7 +96,7 @@ bool ReadTimeStruct(base::PickleIterator* iter,
+@@ -93,7 +95,7 @@ bool ReadTimeStruct(base::PickleIterator* iter,
    } else {
      base::AutoLock lock(g_timezones_lock.Get());
      auto ret_pair = g_timezones.Get().insert(timezone);
 -    output->tm_zone = ret_pair.first->c_str();
 +    output->tm_zone = (char *)ret_pair.first->c_str();
    }
  
    return true;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_BUILD.gn
new file mode 100644
index 000000000000..806318e14523
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_BUILD.gn
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/sandbox/policy/BUILD.gn.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/sandbox/policy/BUILD.gn
+@@ -27,7 +27,7 @@ component("policy") {
+     "//sandbox:common",
+   ]
+   public_deps = []
+-  if (is_linux || is_chromeos) {
++  if ((is_linux || is_chromeos) && !is_bsd) {
+     sources += [
+       "linux/bpf_audio_policy_linux.cc",
+       "linux/bpf_audio_policy_linux.h",
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_switches.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_switches.cc
new file mode 100644
index 000000000000..c045f096d465
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_switches.cc
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/sandbox/policy/switches.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/sandbox/policy/switches.cc
+@@ -81,7 +81,7 @@ const char kNoSandbox[] = "no-sandbox";
+ // Meant to be used as a browser-level switch for testing purposes only.
+ const char kNoSandbox[] = "no-sandbox";
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Instructs the zygote to launch without a sandbox. Processes forked from this
+ // type of zygote will apply their own custom sandboxes later.
+ const char kNoZygoteSandbox[] = "no-zygote-sandbox";
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_switches.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_switches.h
new file mode 100644
index 000000000000..db9495017bf9
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_sandbox_policy_switches.h
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/sandbox/policy/switches.h.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/sandbox/policy/switches.h
+@@ -53,7 +53,7 @@ SANDBOX_POLICY_EXPORT extern const char kNoSandbox[];
+ SANDBOX_POLICY_EXPORT extern const char kGpuSandboxAllowSysVShm[];
+ SANDBOX_POLICY_EXPORT extern const char kGpuSandboxFailuresFatal[];
+ SANDBOX_POLICY_EXPORT extern const char kNoSandbox[];
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ SANDBOX_POLICY_EXPORT extern const char kNoZygoteSandbox[];
+ #endif
+ #if defined(OS_WIN)
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_audio_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_audio_BUILD.gn
index 575936c57a98..cfba3e175851 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_audio_BUILD.gn
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_audio_BUILD.gn
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/services/audio/BUILD.gn.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/services/audio/BUILD.gn.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/services/audio/BUILD.gn
-@@ -106,7 +106,7 @@ source_set("lib") {
-     "//services/service_manager/sandbox:sandbox",
+@@ -73,7 +73,7 @@ source_set("audio") {
+     "//services/audio/public/mojom",
    ]
  
--  if (is_linux) {
-+  if ((is_linux) && (!is_bsd)) {
+-  if (is_linux || is_chromeos) {
++  if ((is_linux || is_chromeos) && !is_bsd) {
      sources += [
        "audio_sandbox_hook_linux.cc",
        "audio_sandbox_hook_linux.h",
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_device_geolocation_location__arbitrator.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_device_geolocation_location__arbitrator.cc
index 9f63b2eb7c59..80e0e835590f 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_device_geolocation_location__arbitrator.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_device_geolocation_location__arbitrator.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/services/device/geolocation/location_arbitrator.cc.orig	2020-03-16 14:04:24 UTC
+--- src/3rdparty/chromium/services/device/geolocation/location_arbitrator.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/services/device/geolocation/location_arbitrator.cc
-@@ -159,7 +159,7 @@ LocationArbitrator::NewNetworkLocationProvider(
+@@ -159,7 +159,7 @@ LocationArbitrator::NewSystemLocationProvider() {
  
  std::unique_ptr<LocationProvider>
  LocationArbitrator::NewSystemLocationProvider() {
--#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_FUCHSIA)
-+#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
    return nullptr;
  #else
    return device::NewSystemLocationProvider();
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_device_hid_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_device_hid_BUILD.gn
deleted file mode 100644
index be8dffe51590..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_device_hid_BUILD.gn
+++ /dev/null
@@ -1,16 +0,0 @@
---- src/3rdparty/chromium/services/device/hid/BUILD.gn.orig	2018-11-13 18:25:11 UTC
-+++ src/3rdparty/chromium/services/device/hid/BUILD.gn
-@@ -51,6 +51,13 @@ source_set("hid") {
-     deps += [ "//device/udev_linux" ]
-   }
- 
-+  if (is_bsd) {
-+    sources -= [
-+      "hid_connection_linux.cc",
-+      "hid_connection_linux.h",
-+    ]
-+  }
-+
-   if (is_chromeos) {
-     deps += [ "//chromeos" ]
-   }
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_device_serial_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_device_serial_BUILD.gn
index b19d623a438d..25df2e608a0f 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_device_serial_BUILD.gn
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_device_serial_BUILD.gn
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/services/device/serial/BUILD.gn.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/services/device/serial/BUILD.gn.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/services/device/serial/BUILD.gn
-@@ -4,7 +4,7 @@
+@@ -11,7 +11,7 @@ set_sources_assignment_filter(deprecated_default_sourc
+ import("//build/config/deprecated_default_sources_assignment_filter.gni")
+ set_sources_assignment_filter(deprecated_default_sources_assignment_filter)
  
- import("//build/config/features.gni")
- 
--if (is_win || (is_linux && use_udev) || is_mac) {
-+if (is_win || (is_linux && use_udev) || is_mac || is_bsd) {
+-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/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_device_serial_serial__device__enumerator.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_device_serial_serial__device__enumerator.cc
new file mode 100644
index 000000000000..fd5ff2291222
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_device_serial_serial__device__enumerator.cc
@@ -0,0 +1,20 @@
+--- src/3rdparty/chromium/services/device/serial/serial_device_enumerator.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/services/device/serial/serial_device_enumerator.cc
+@@ -10,7 +10,7 @@
+ #include "build/build_config.h"
+ #include "components/device_event_log/device_event_log.h"
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "services/device/serial/serial_device_enumerator_linux.h"
+ #elif defined(OS_MAC)
+ #include "services/device/serial/serial_device_enumerator_mac.h"
+@@ -23,7 +23,7 @@ std::unique_ptr<SerialDeviceEnumerator> SerialDeviceEn
+ // static
+ std::unique_ptr<SerialDeviceEnumerator> SerialDeviceEnumerator::Create(
+     scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   return SerialDeviceEnumeratorLinux::Create();
+ #elif defined(OS_MAC)
+   return std::make_unique<SerialDeviceEnumeratorMac>();
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_device_serial_serial__io__handler__posix.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_device_serial_serial__io__handler__posix.cc
index 3c9408794533..ded5074d180b 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_device_serial_serial__io__handler__posix.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_device_serial_serial__io__handler__posix.cc
@@ -1,11 +1,22 @@
---- src/3rdparty/chromium/services/device/serial/serial_io_handler_posix.cc.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/services/device/serial/serial_io_handler_posix.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/services/device/serial/serial_io_handler_posix.cc
-@@ -65,7 +65,7 @@ bool BitrateToSpeedConstant(int bitrate, speed_t* spee
+@@ -37,6 +37,10 @@ struct termios2 {
+ 
+ #endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
+ 
++#if defined(OS_BSD)
++#include <sys/serial.h>
++#endif
++
+ #if defined(OS_MAC)
+ #include <IOKit/serial/ioss.h>
+ #endif
+@@ -67,7 +71,7 @@ bool BitrateToSpeedConstant(int bitrate, speed_t* spee
      BITRATE_TO_SPEED_CASE(9600)
      BITRATE_TO_SPEED_CASE(19200)
      BITRATE_TO_SPEED_CASE(38400)
--#if !defined(OS_MACOSX)
-+#if !defined(OS_MACOSX) && !defined(OS_BSD)
+-#if !defined(OS_MAC)
++#if !defined(OS_MAC) && !defined(OS_BSD)
      BITRATE_TO_SPEED_CASE(57600)
      BITRATE_TO_SPEED_CASE(115200)
      BITRATE_TO_SPEED_CASE(230400)
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_network_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_network_BUILD.gn
index e09ec3d55bb4..a524d78c400d 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_network_BUILD.gn
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_network_BUILD.gn
@@ -1,10 +1,19 @@
---- src/3rdparty/chromium/services/network/BUILD.gn.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/services/network/BUILD.gn.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/services/network/BUILD.gn
-@@ -160,7 +160,6 @@ component("network_service") {
+@@ -262,9 +262,15 @@ jumbo_component("network_service") {
+     deps += [ "//components/certificate_transparency" ]
+   }
  
-   if (is_linux) {
+-  if (is_linux || is_chromeos) {
++  if ((is_linux && !is_bsd) || is_chromeos) {
      deps += [
--      "//sandbox/linux:sandbox_services",
-       "//services/service_manager/sandbox:sandbox",
+       "//sandbox/linux:sandbox_services",
++      "//sandbox/policy",
++    ]
++  }
++
++  if (is_bsd) {
++    deps += [
+       "//sandbox/policy",
      ]
    }
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_network_network__context.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_network_network__context.cc
index 0fa1d2d55cfa..73bf508de8e9 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_network_network__context.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_network_network__context.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/services/network/network_context.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/services/network/network_context.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/services/network/network_context.cc
-@@ -1810,7 +1810,7 @@ URLRequestContextOwner NetworkContext::MakeURLRequestC
+@@ -1921,7 +1921,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/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_network_network__sandbox__hook__linux.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_network_network__sandbox__hook__linux.cc
index 873df87daa09..d160463556b2 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_network_network__sandbox__hook__linux.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_network_network__sandbox__hook__linux.cc
@@ -1,18 +1,18 @@
---- src/3rdparty/chromium/services/network/network_sandbox_hook_linux.cc.orig	2019-03-01 17:04:22 UTC
+--- src/3rdparty/chromium/services/network/network_sandbox_hook_linux.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/services/network/network_sandbox_hook_linux.cc
-@@ -14,6 +14,7 @@ using sandbox::syscall_broker::MakeBrokerCommandSet;
+@@ -14,6 +14,7 @@ bool NetworkPreSandboxHook(sandbox::policy::SandboxLin
  namespace network {
  
- bool NetworkPreSandboxHook(service_manager::SandboxLinux::Options options) {
+ bool NetworkPreSandboxHook(sandbox::policy::SandboxLinux::Options options) {
 +#if !defined(OS_BSD)
-   auto* instance = service_manager::SandboxLinux::GetInstance();
+   auto* instance = sandbox::policy::SandboxLinux::GetInstance();
  
    // TODO(tsepez): remove universal permission under filesytem root.
-@@ -32,6 +33,7 @@ bool NetworkPreSandboxHook(service_manager::SandboxLin
-       service_manager::SandboxLinux::PreSandboxHook(), options);
+@@ -32,6 +33,7 @@ bool NetworkPreSandboxHook(sandbox::policy::SandboxLin
+       sandbox::policy::SandboxLinux::PreSandboxHook(), options);
  
    instance->EngageNamespaceSandboxIfPossible();
 +#endif // defined(OS_BSD)
    return true;
  }
  
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_network_network__service.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_network_network__service.cc
index f0da3d823708..ae903cf5b9b8 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_network_network__service.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_network_network__service.cc
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/services/network/network_service.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/services/network/network_service.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/services/network/network_service.cc
-@@ -67,7 +67,7 @@
+@@ -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
  
-@@ -636,7 +636,7 @@ void NetworkService::OnCertDBChanged() {
+@@ -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) && !defined(TOOLKIT_QT)
    DCHECK(!os_crypt_config_set_);
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_network_network__service.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_network_network__service.h
index e41e1ff5ced0..3cfb6599d79b 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_network_network__service.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_network_network__service.h
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/services/network/network_service.h.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/services/network/network_service.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/services/network/network_service.h
-@@ -186,7 +186,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkService
- #endif  // !BUILDFLAG(IS_CT_SUPPORTED)
-   void UpdateCRLSet(base::span<const uint8_t> crl_set) override;
+@@ -196,7 +196,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)
    void SetCryptConfig(mojom::CryptConfigPtr crypt_config) override;
  #endif
- #if defined(OS_MACOSX) && !defined(OS_IOS)
+ #if defined(OS_WIN) || defined(OS_MAC)
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_network_public_cpp_cert__verifier_cert__verifier__creation.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_network_public_cpp_cert__verifier_cert__verifier__creation.cc
new file mode 100644
index 000000000000..2a13a8f4d942
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_network_public_cpp_cert__verifier_cert__verifier__creation.cc
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/services/network/public/cpp/cert_verifier/cert_verifier_creation.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/services/network/public/cpp/cert_verifier/cert_verifier_creation.cc
+@@ -70,7 +70,7 @@ bool IsUsingCertNetFetcher() {
+ 
+ bool IsUsingCertNetFetcher() {
+ #if defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_CHROMEOS) || \
+-    defined(OS_LINUX) ||                                                  \
++    defined(OS_LINUX) || defined(OS_BSD) ||                               \
+     BUILDFLAG(TRIAL_COMPARISON_CERT_VERIFIER_SUPPORTED) ||                \
+     BUILDFLAG(BUILTIN_CERT_VERIFIER_FEATURE_SUPPORTED)
+   return true;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_resource__coordinator_memory__instrumentation_queued__request__dispatcher.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_resource__coordinator_memory__instrumentation_queued__request__dispatcher.cc
index 4948abbb9c7c..0e35a6f3391e 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_resource__coordinator_memory__instrumentation_queued__request__dispatcher.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_resource__coordinator_memory__instrumentation_queued__request__dispatcher.cc
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/services/resource_coordinator/memory_instrumentation/queued_request_dispatcher.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/services/resource_coordinator/memory_instrumentation/queued_request_dispatcher.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/services/resource_coordinator/memory_instrumentation/queued_request_dispatcher.cc
-@@ -43,7 +43,7 @@ namespace {
+@@ -45,7 +45,7 @@ uint32_t CalculatePrivateFootprintKb(const mojom::RawO
  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_ANDROID)
-+#if defined(OS_LINUX) || 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)
    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;
-@@ -82,7 +82,7 @@ memory_instrumentation::mojom::OSMemDumpPtr CreatePubl
+@@ -84,7 +84,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);
--#if defined(OS_LINUX) || defined(OS_ANDROID)
-+#if defined(OS_LINUX) || 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)
    os_dump->private_footprint_swap_kb =
        internal_os_dump.platform_private_footprint->vm_swap_bytes / 1024;
  #endif
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h
index d3345382efdf..19be81430d8c 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h
@@ -1,32 +1,32 @@
---- src/3rdparty/chromium/services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics.h.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics.h
-@@ -28,9 +28,9 @@ class COMPONENT_EXPORT(
+@@ -45,9 +45,9 @@ class COMPONENT_EXPORT(
                                      mojom::RawOSMemDump*);
    static std::vector<mojom::VmRegionPtr> GetProcessMemoryMaps(base::ProcessId);
  
--#if defined(OS_LINUX) || defined(OS_ANDROID)
-+#if defined(OS_LINUX) || 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)
    static void SetProcSmapsForTesting(FILE*);
--#endif  // defined(OS_LINUX) || defined(OS_ANDROID)
-+#endif  // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
  
   private:
    FRIEND_TEST_ALL_PREFIXES(OSMetricsTest, ParseProcSmaps);
-@@ -44,7 +44,7 @@ class COMPONENT_EXPORT(
+@@ -61,7 +61,7 @@ class COMPONENT_EXPORT(
    static std::vector<mojom::VmRegionPtr> GetProcessModules(base::ProcessId);
  #endif
  
--#if defined(OS_LINUX) || defined(OS_ANDROID)
-+#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
-   // Provides information on the dump state of resident pages.
-   enum class MappedAndResidentPagesDumpState {
-     // Access to /proc/<pid>/pagemap can be denied for android devices running
-@@ -68,7 +68,7 @@ class COMPONENT_EXPORT(
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+   // Provides information on the dump state of resident pages. These values are
+   // written to logs. New enum values can be added, but existing enums must
+   // never be renumbered or deleted and reused.
+@@ -96,7 +96,7 @@ class COMPONENT_EXPORT(
    // TODO(chiniforooshan): move to /base/process/process_metrics_linux.cc after
    // making sure that peak RSS is useful.
    static size_t GetPeakResidentSetSize(base::ProcessId pid);
--#endif  // defined(OS_LINUX) || defined(OS_ANDROID)
-+#endif  // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
  };
  
  }  // namespace memory_instrumentation
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__linux.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__linux.cc
index e43a38b1f096..c37bd27d5a9a 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__linux.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__linux.cc
@@ -1,103 +1,144 @@
---- src/3rdparty/chromium/services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics_linux.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics_linux.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics_linux.cc
-@@ -24,8 +24,10 @@
+@@ -5,7 +5,6 @@
+ #include <dlfcn.h>
+ #include <fcntl.h>
+ #include <stdint.h>
+-#include <sys/prctl.h>
+ 
+ #include <memory>
+ 
+@@ -27,8 +26,14 @@
  #include "build/build_config.h"
  #include "services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics.h"
  
++#if !defined(OS_BSD)
++#include <sys/prctl.h>
++#endif
++
 +#if !defined(OS_BSD)
  // Symbol with virtual address of the start of ELF header of the current binary.
  extern char __ehdr_start;
 +#endif
  
  namespace memory_instrumentation {
  
-@@ -88,6 +90,7 @@ struct ModuleData {
+@@ -91,6 +96,7 @@ ModuleData GetMainModuleData() {
  
  ModuleData GetMainModuleData() {
    ModuleData module_data;
 +#if !defined(OS_BSD)
    Dl_info dl_info;
    if (dladdr(&__ehdr_start, &dl_info)) {
      base::debug::ElfBuildIdBuffer build_id;
-@@ -98,6 +101,7 @@ ModuleData GetMainModuleData() {
+@@ -101,6 +107,7 @@ ModuleData GetMainModuleData() {
        module_data.build_id = std::string(build_id, build_id_length);
      }
    }
 +#endif
    return module_data;
  }
  
-@@ -145,14 +149,14 @@ bool ParseSmapsHeader(const char* header_line,
+@@ -148,14 +155,14 @@ bool ParseSmapsHeader(const char* header_line,
    // Build ID is needed to symbolize heap profiles, and is generated only on
    // official builds. Build ID is only added for the current library (chrome)
    // since it is racy to read other libraries which can be unmapped any time.
 -#if defined(OFFICIAL_BUILD)
 +#if defined(OFFICIAL_BUILD) && !defined(OS_BSD)
    if (!region->mapped_file.empty() &&
        base::StartsWith(main_module_data.path, region->mapped_file,
                         base::CompareCase::SENSITIVE) &&
        !main_module_data.build_id.empty()) {
      region->module_debugid = main_module_data.build_id;
    }
 -#endif  // defined(OFFICIAL_BUILD)
 +#endif  // defined(OFFICIAL_BUILD) && !defined(OS_BSD)
  
    return res;
  }
-@@ -241,6 +245,7 @@ bool OSMetrics::FillOSMemoryDump(base::ProcessId pid,
+@@ -238,6 +245,7 @@ class ScopedProcessSetDumpable {
+ class ScopedProcessSetDumpable {
+  public:
+   ScopedProcessSetDumpable() {
++#if !defined(OS_BSD)
+     int result = prctl(PR_GET_DUMPABLE, 0, 0, 0, 0);
+     if (result < 0) {
+       PLOG(ERROR) << "prctl";
+@@ -253,15 +261,20 @@ class ScopedProcessSetDumpable {
+         AvoidPrctlOnDestruction();
+       }
+     }
++#else
++    was_dumpable_ = true;
++#endif
+   }
+ 
+   ScopedProcessSetDumpable(const ScopedProcessSetDumpable&) = delete;
+   ScopedProcessSetDumpable& operator=(const ScopedProcessSetDumpable&) = delete;
+ 
+   ~ScopedProcessSetDumpable() {
++#if !defined(OS_BSD)
+     if (!was_dumpable_) {
+       PCHECK(prctl(PR_SET_DUMPABLE, 0, 0, 0, 0) == 0) << "prctl";
+     }
++#endif
+   }
+ 
+  private:
+@@ -284,6 +297,7 @@ bool OSMetrics::FillOSMemoryDump(base::ProcessId pid,
                                   mojom::RawOSMemDump* dump) {
    // TODO(chiniforooshan): There is no need to read both /statm and /status
    // files. Refactor to get everything from /status using ProcessMetric.
 +#if !defined(OS_BSD)
    auto statm_file = GetProcPidDir(pid).Append("statm");
    auto autoclose = base::ScopedFD(open(statm_file.value().c_str(), O_RDONLY));
    int statm_fd = autoclose.get();
-@@ -255,6 +260,10 @@ bool OSMetrics::FillOSMemoryDump(base::ProcessId pid,
+@@ -298,6 +312,10 @@ bool OSMetrics::FillOSMemoryDump(base::ProcessId pid,
  
    if (!success)
      return false;
 +#else
 +  uint64_t resident_pages = 0;
 +  uint64_t shared_pages = 0;
 +#endif
  
    auto process_metrics = CreateProcessMetrics(pid);
  
-@@ -295,6 +304,10 @@ bool OSMetrics::FillOSMemoryDump(base::ProcessId pid,
+@@ -342,6 +360,10 @@ std::vector<VmRegionPtr> OSMetrics::GetProcessMemoryMa
  
  // static
  std::vector<VmRegionPtr> OSMetrics::GetProcessMemoryMaps(base::ProcessId pid) {
 +#if defined(OS_BSD)
 +  NOTIMPLEMENTED();
 +  return std::vector<VmRegionPtr>();
 +#else
    std::vector<VmRegionPtr> maps;
    uint32_t res = 0;
    if (g_proc_smaps_for_testing) {
-@@ -312,6 +325,7 @@ std::vector<VmRegionPtr> OSMetrics::GetProcessMemoryMa
+@@ -359,6 +381,7 @@ std::vector<VmRegionPtr> OSMetrics::GetProcessMemoryMa
      return std::vector<VmRegionPtr>();
  
    return maps;
 +#endif
  }
  
  // static
-@@ -319,6 +333,10 @@ OSMetrics::MappedAndResidentPagesDumpState OSMetrics::
+@@ -366,6 +389,10 @@ OSMetrics::MappedAndResidentPagesDumpState OSMetrics::
      const size_t start_address,
      const size_t end_address,
      std::vector<uint8_t>* accessed_pages_bitmap) {
 +#if defined(OS_BSD)
 +  NOTIMPLEMENTED();
 +  return OSMetrics::MappedAndResidentPagesDumpState::kFailure;
 +#else
    const char* kPagemap = "/proc/self/pagemap";
  
    base::ScopedFILE pagemap_file(fopen(kPagemap, "r"));
-@@ -360,6 +378,7 @@ OSMetrics::MappedAndResidentPagesDumpState OSMetrics::
+@@ -413,6 +440,7 @@ OSMetrics::MappedAndResidentPagesDumpState OSMetrics::
      }
    }
    return OSMetrics::MappedAndResidentPagesDumpState::kSuccess;
 +#endif
  }
  
  // static
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_BUILD.gn
new file mode 100644
index 000000000000..7694a93336b8
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_BUILD.gn
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/services/service_manager/BUILD.gn.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/services/service_manager/BUILD.gn
+@@ -65,7 +65,7 @@ source_set("service_manager") {
+     ]
+   }
+ 
+-  if (is_linux || is_chromeos) {
++  if ((is_linux || is_chromeos) && !is_bsd) {
+     deps += [ "//sandbox/linux:sandbox_services" ]
+   }
+ }
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_embedder_main.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_embedder_main.cc
deleted file mode 100644
index 7027a86a0d27..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_embedder_main.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/3rdparty/chromium/services/service_manager/embedder/main.cc.orig	2019-05-23 12:39:34 UTC
-+++ src/3rdparty/chromium/services/service_manager/embedder/main.cc
-@@ -322,7 +322,7 @@ int Main(const MainParams& params) {
-     base::EnableTerminationOnOutOfMemory();
- #endif
- 
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
-     // The various desktop environments set this environment variable that
-     // allows the dbus client library to connect directly to the bus. When this
-     // variable is not set (test environments like xvfb-run), the dbus client
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_embedder_set__process__title__linux.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_embedder_set__process__title__linux.h
deleted file mode 100644
index 4530efc4d39d..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_embedder_set__process__title__linux.h
+++ /dev/null
@@ -1,20 +0,0 @@
---- src/3rdparty/chromium/services/service_manager/embedder/set_process_title_linux.h.orig	2018-11-13 18:25:11 UTC
-+++ src/3rdparty/chromium/services/service_manager/embedder/set_process_title_linux.h
-@@ -5,6 +5,9 @@
- #ifndef SERVICES_SERVICE_MANAGER_EMBEDDER_SET_PROCESS_TITLE_LINUX_H_
- #define SERVICES_SERVICE_MANAGER_EMBEDDER_SET_PROCESS_TITLE_LINUX_H_
- 
-+#include "build/build_config.h"
-+
-+#if !defined(OS_FREEBSD)
- // Set the process title that will show in "ps" and similar tools. Takes
- // printf-style format string and arguments. After calling setproctitle()
- // the original main() argv[] array should not be used. By default, the
-@@ -14,6 +17,7 @@
- // This signature and naming is to be compatible with most other Unix
- // implementations of setproctitle().
- void setproctitle(const char* fmt, ...);
-+#endif
- 
- // Initialize state needed for setproctitle() on Linux. Pass the argv pointer
- // from main() to setproctitle_init() before calling setproctitle().
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_public_cpp_service__executable_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_public_cpp_service__executable_BUILD.gn
index c74846d9a98b..29623bb23cf8 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_public_cpp_service__executable_BUILD.gn
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_public_cpp_service__executable_BUILD.gn
@@ -1,14 +1,11 @@
---- src/3rdparty/chromium/services/service_manager/public/cpp/service_executable/BUILD.gn.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/services/service_manager/public/cpp/service_executable/BUILD.gn.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/services/service_manager/public/cpp/service_executable/BUILD.gn
-@@ -30,6 +30,11 @@ source_set("support") {
-       "//sandbox/linux:seccomp_bpf",
-     ]
-   }
-+  if (is_bsd) {
-+    deps -= [
-+      "//sandbox/linux:seccomp_bpf"
-+    ]
-+  }
- }
+@@ -22,7 +22,7 @@ source_set("support") {
+     "//services/service_manager/public/mojom",
+   ]
  
- # Service executable targets should link against this to get a boilerplate entry
+-  if (is_linux || is_chromeos) {
++  if ((is_linux || is_chromeos) && !is_bsd) {
+     deps += [
+       "//sandbox/linux:sandbox",
+       "//sandbox/linux:sandbox_services",
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_sandbox_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_sandbox_BUILD.gn
deleted file mode 100644
index 70f84f513dc2..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_sandbox_BUILD.gn
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/3rdparty/chromium/services/service_manager/sandbox/BUILD.gn.orig	2018-11-13 18:25:11 UTC
-+++ src/3rdparty/chromium/services/service_manager/sandbox/BUILD.gn
-@@ -28,7 +28,7 @@ component("sandbox") {
-     "//base",
-     "//sandbox:common",
-   ]
--  if (is_linux) {
-+  if (is_linux && !is_bsd) {
-     sources += [
-       "linux/bpf_base_policy_linux.cc",
-       "linux/bpf_base_policy_linux.h",
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_sandbox_linux_bpf__renderer__policy__linux.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_sandbox_linux_bpf__renderer__policy__linux.cc
deleted file mode 100644
index 263746bdd858..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_sandbox_linux_bpf__renderer__policy__linux.cc
+++ /dev/null
@@ -1,14 +0,0 @@
---- src/3rdparty/chromium/services/service_manager/sandbox/linux/bpf_renderer_policy_linux.cc.orig	2019-05-23 12:39:34 UTC
-+++ src/3rdparty/chromium/services/service_manager/sandbox/linux/bpf_renderer_policy_linux.cc
-@@ -15,6 +15,11 @@
- #include "sandbox/linux/system_headers/linux_syscalls.h"
- #include "services/service_manager/sandbox/linux/sandbox_linux.h"
- 
-+// On PPC64, TCGETS is defined in terms of struct termios, so we must include termios.h
-+#ifdef __powerpc64__
-+#include <termios.h>
-+#endif
-+
- // TODO(vignatti): replace the local definitions below with #include
- // <linux/dma-buf.h> once kernel version 4.6 becomes widely used.
- #include <linux/types.h>
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_zygote_zygote__linux.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_zygote_zygote__linux.cc
deleted file mode 100644
index 7ecfc83da609..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_service__manager_zygote_zygote__linux.cc
+++ /dev/null
@@ -1,15 +0,0 @@
---- src/3rdparty/chromium/services/service_manager/zygote/zygote_linux.cc.orig	2019-11-27 21:12:25 UTC
-+++ src/3rdparty/chromium/services/service_manager/zygote/zygote_linux.cc
-@@ -1,6 +1,7 @@
- // 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.
-+#if 0
- 
- #include "services/service_manager/zygote/zygote_linux.h"
- 
-@@ -657,3 +658,4 @@ bool Zygote::HandleGetSandboxStatus(int fd, base::Pick
- }
- 
- }  // namespace service_manager
-+#endif
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_video__capture_broadcasting__receiver.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_video__capture_broadcasting__receiver.cc
index e8f0d5652fdc..a920e7b26e8f 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_video__capture_broadcasting__receiver.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_services_video__capture_broadcasting__receiver.cc
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/services/video_capture/broadcasting_receiver.cc.orig	2020-03-16 14:04:24 UTC
+--- src/3rdparty/chromium/services/video_capture/broadcasting_receiver.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/services/video_capture/broadcasting_receiver.cc
-@@ -40,7 +40,7 @@ void CloneSharedBufferHandle(const mojo::ScopedSharedB
+@@ -39,7 +39,7 @@ void CloneSharedBufferToRawFileDescriptorHandle(
  void CloneSharedBufferToRawFileDescriptorHandle(
      const mojo::ScopedSharedBufferHandle& source,
      media::mojom::VideoBufferHandlePtr* target) {
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    // |source| is unwrapped to a |PlatformSharedMemoryRegion|, from whence a file
    // descriptor can be extracted which is then mojo-wrapped.
    base::subtle::PlatformSharedMemoryRegion platform_region =
-@@ -183,7 +183,7 @@ void BroadcastingReceiver::BufferContext::
+@@ -184,7 +184,7 @@ void BroadcastingReceiver::BufferContext::
      ConvertRawFileDescriptorToSharedBuffer() {
    DCHECK(buffer_handle_->is_shared_memory_via_raw_file_descriptor());
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    // The conversion unwraps the descriptor from its mojo handle to the raw file
    // descriptor (ie, an int). This is used to create a
    // PlatformSharedMemoryRegion which is then wrapped as a
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_skia_ext_image__operations__unittest.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_skia_ext_image__operations__unittest.cc
deleted file mode 100644
index b915e61fddc4..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_skia_ext_image__operations__unittest.cc
+++ /dev/null
@@ -1,59 +0,0 @@
---- src/3rdparty/chromium/skia/ext/image_operations_unittest.cc.orig	2019-05-23 12:39:34 UTC
-+++ src/3rdparty/chromium/skia/ext/image_operations_unittest.cc
-@@ -18,9 +18,11 @@
- #include "skia/ext/image_operations.h"
- #include "testing/gtest/include/gtest/gtest.h"
- #include "third_party/skia/include/core/SkBitmap.h"
-+#include "third_party/skia/include/core/SkColorPriv.h"
- #include "third_party/skia/include/core/SkColorSpace.h"
- #include "third_party/skia/include/core/SkImageInfo.h"
- #include "third_party/skia/include/core/SkRect.h"
-+#include "third_party/skia/include/core/SkUnPreMultiply.h"
- #include "ui/gfx/codec/png_codec.h"
- #include "ui/gfx/geometry/size.h"
- 
-@@ -151,7 +153,7 @@ void DrawCheckerToBitmap(int w, int h,
- 
-       bool use_color2 = (x_bit != y_bit);  // xor
- 
--      *bmp->getAddr32(x, y) = (use_color2 ? color2 : color1);
-+      *bmp->getAddr32(x, y) = SkPreMultiplyColor(use_color2 ? color2 : color1);
-     }
-   }
- }
-@@ -273,7 +275,7 @@ void CheckResizeMethodShouldAverageGrid(
-         std::max(tested_pixel.max_color_distance,
-                  tested_method.max_color_distance_override);
- 
--    const SkColor actual_color = *dest.getAddr32(x, y);
-+    const SkColor actual_color = SkUnPreMultiply::PMColorToColor(*dest.getAddr32(x, y));
- 
-     // Check that the pixels away from the border region are very close
-     // to the expected average color
-@@ -528,7 +530,7 @@ TEST(ImageOperations, ScaleUp) {
-   for (int src_y = 0; src_y < src_h; ++src_y) {
-     for (int src_x = 0; src_x < src_w; ++src_x) {
-       *src.getAddr32(src_x, src_y) =
--          SkColorSetARGB(255, 10 + src_x * 100, 10 + src_y * 100, 0);
-+          SkPackARGB32(255, 10 + src_x * 100, 10 + src_y * 100, 0);
-     }
-   }
- 
-@@ -552,7 +554,7 @@ TEST(ImageOperations, ScaleUp) {
-               lanczos3(src_x + 0.5 - dst_x_in_src) *
-               lanczos3(src_y + 0.5 - dst_y_in_src);
-           sum += coeff;
--          SkColor tmp = *src.getAddr32(src_x, src_y);
-+          SkColor tmp = SkUnPreMultiply::PMColorToColor(*src.getAddr32(src_x, src_y));
-           a += coeff * SkColorGetA(tmp);
-           r += coeff * SkColorGetR(tmp);
-           g += coeff * SkColorGetG(tmp);
-@@ -571,7 +573,7 @@ TEST(ImageOperations, ScaleUp) {
-       if (r > 255.0f) r = 255.0f;
-       if (g > 255.0f) g = 255.0f;
-       if (b > 255.0f) b = 255.0f;
--      SkColor dst_color = *dst.getAddr32(dst_x, dst_y);
-+      SkColor dst_color = SkUnPreMultiply::PMColorToColor(*dst.getAddr32(dst_x, dst_y));
-       EXPECT_LE(fabs(SkColorGetA(dst_color) - a), 1.5f);
-       EXPECT_LE(fabs(SkColorGetR(dst_color) - r), 1.5f);
-       EXPECT_LE(fabs(SkColorGetG(dst_color) - g), 1.5f);
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_angle_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_angle_BUILD.gn
index 3408ad70c63a..65291775ceca 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_angle_BUILD.gn
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_angle_BUILD.gn
@@ -1,20 +1,48 @@
---- src/3rdparty/chromium/third_party/angle/BUILD.gn.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/third_party/angle/BUILD.gn.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/angle/BUILD.gn
-@@ -354,7 +354,8 @@ angle_static_library("angle_gpu_info_util") {
-   if (is_linux) {
+@@ -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",
+@@ -388,7 +393,8 @@ angle_static_library("angle_gpu_info_util") {
+   if (is_linux || is_chromeos) {
      sources += libangle_gpu_info_util_linux_sources
  
--    if (angle_use_x11) {
+-    if (angle_use_x11 && angle_has_build) {
++    if ((angle_use_x11 && angle_has_build) || is_bsd) {
 +    # Somewhere "angle_use_x11" is set to false, so we need to add is_bsd here
-+    if (angle_use_x11 || is_bsd) {
        sources += libangle_gpu_info_util_x11_sources
        deps += [ "src/third_party/libXNVCtrl:libXNVCtrl" ]
        defines += [ "GPU_INFO_USE_X11" ]
-@@ -362,6 +363,7 @@ angle_static_library("angle_gpu_info_util") {
+@@ -396,6 +402,7 @@ angle_static_library("angle_gpu_info_util") {
          "X11",
          "Xi",
          "Xext",
 +        "GL",
        ]
      }
    }
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp
index badcf937c4a8..544f9bb4fa2d 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp
@@ -1,56 +1,55 @@
---- src/3rdparty/chromium/third_party/angle/src/gpu_info_util/SystemInfo_x11.cpp.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/third_party/angle/src/gpu_info_util/SystemInfo_x11.cpp.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/angle/src/gpu_info_util/SystemInfo_x11.cpp
 @@ -8,6 +8,8 @@
  
  #include "gpu_info_util/SystemInfo_internal.h"
  
 +#include <GL/glx.h>
 +#include <GL/glxext.h>
  #include <X11/Xlib.h>
  
  #include "common/debug.h"
-@@ -18,8 +20,44 @@
- #error SystemInfo_x11.cpp compiled without GPU_INFO_USE_X11
+@@ -18,8 +20,43 @@
+ #    error SystemInfo_x11.cpp compiled without GPU_INFO_USE_X11
  #endif
  
 +#define GLX_RENDERER_VENDOR_ID_MESA	0x8183
 +#define GLX_RENDERER_DEVICE_ID_MESA	0x8184
 +
  namespace angle
  {
 +
 +bool CollectMesaCardInfo(std::vector<GPUDeviceInfo> *devices)
 +{
 +
 +    unsigned int vid[3], did[3];
 +
 +    Display *display = XOpenDisplay(NULL);
 +    if (!display) {
 +        return false;
 +    }
 +
 +    PFNGLXQUERYRENDERERINTEGERMESAPROC queryInteger =
 +        (PFNGLXQUERYRENDERERINTEGERMESAPROC) glXGetProcAddressARB((const GLubyte *)
 +        "glXQueryRendererIntegerMESA");
 +
 +    if (!queryInteger)
 +        return false;
 +
 +    bool vendor_ret =
 +        queryInteger(display, 0, 0, GLX_RENDERER_VENDOR_ID_MESA, vid);
 +    bool device_ret =
 +        queryInteger(display, 0, 0, GLX_RENDERER_DEVICE_ID_MESA, did);
 +
 +    if (vendor_ret && device_ret) {
 +        GPUDeviceInfo info;
 +        info.vendorId = vid[0];
 +        info.deviceId = did[0];
 +        devices->push_back(info);
 +    }
 +
 +    return true;
 +}
-+
  
  bool GetNvidiaDriverVersionWithXNVCtrl(std::string *version)
  {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_libANGLE_Display.cpp b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_libANGLE_Display.cpp
index 93ffbe2716f7..bdb9de4cba69 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_libANGLE_Display.cpp
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_libANGLE_Display.cpp
@@ -1,47 +1,47 @@
---- src/3rdparty/chromium/third_party/angle/src/libANGLE/Display.cpp.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/third_party/angle/src/libANGLE/Display.cpp.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/angle/src/libANGLE/Display.cpp
-@@ -54,7 +54,7 @@
+@@ -55,7 +55,7 @@
  #        include "libANGLE/renderer/gl/cgl/DisplayCGL.h"
  #    elif defined(ANGLE_PLATFORM_IOS)
  #        include "libANGLE/renderer/gl/eagl/DisplayEAGL.h"
 -#    elif defined(ANGLE_PLATFORM_LINUX)
 +#    elif defined(ANGLE_PLATFORM_POSIX)
- #        if defined(ANGLE_USE_OZONE)
- #            include "libANGLE/renderer/gl/egl/ozone/DisplayOzone.h"
- #        else
-@@ -252,7 +252,7 @@ rx::DisplayImpl *CreateDisplayFromAttribs(EGLAttrib di
+ #        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);
 -#    elif defined(ANGLE_PLATFORM_LINUX)
 +#    elif defined(ANGLE_PLATFORM_POSIX)
- #        if defined(ANGLE_USE_OZONE)
-             // This might work but has never been tried, so disallow for now.
-             impl = nullptr;
-@@ -284,7 +284,7 @@ rx::DisplayImpl *CreateDisplayFromAttribs(EGLAttrib di
+ #        if defined(ANGLE_USE_GBM)
+             if (platformType == 0)
+             {
+@@ -305,7 +305,7 @@ rx::DisplayImpl *CreateDisplayFromAttribs(EGLAttrib di
  #if defined(ANGLE_ENABLE_OPENGL)
  #    if defined(ANGLE_PLATFORM_WINDOWS)
              impl = new rx::DisplayWGL(state);
 -#    elif defined(ANGLE_PLATFORM_LINUX)
 +#    elif defined(ANGLE_PLATFORM_POSIX)
- #        if defined(ANGLE_USE_OZONE)
-             impl = new rx::DisplayOzone(state);
- #        else
-@@ -315,7 +315,7 @@ rx::DisplayImpl *CreateDisplayFromAttribs(EGLAttrib di
+ #        if defined(ANGLE_USE_GBM)
+             if (platformType == 0)
+             {
+@@ -346,7 +346,7 @@ rx::DisplayImpl *CreateDisplayFromAttribs(EGLAttrib di
              {
                  impl = rx::CreateVulkanWin32Display(state);
              }
 -#    elif defined(ANGLE_PLATFORM_LINUX)
 +#    elif defined(ANGLE_PLATFORM_POSIX)
-             if (rx::IsVulkanXcbDisplayAvailable())
+ #        if defined(ANGLE_USE_X11)
+             if (platformType == EGL_PLATFORM_X11_EXT && rx::IsVulkanXcbDisplayAvailable())
              {
-                 impl = rx::CreateVulkanXcbDisplay(state);
-@@ -1387,7 +1387,7 @@ static ClientExtensions GenerateClientExtensions()
+@@ -1612,7 +1612,7 @@ static ClientExtensions GenerateClientExtensions()
      extensions.x11Visual = true;
  #endif
  
--#if defined(ANGLE_PLATFORM_LINUX) && !defined(ANGLE_USE_OZONE)
-+#if defined(ANGLE_PLATFORM_POSIX) && !defined(ANGLE_USE_OZONE)
+-#if defined(ANGLE_PLATFORM_LINUX)
++#if defined(ANGLE_PLATFORM_POSIX)
      extensions.platformANGLEDeviceTypeEGLANGLE = true;
  #endif
  
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_libANGLE_renderer_driver__utils.cpp b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_libANGLE_renderer_driver__utils.cpp
index 75891e2eba3b..a533700fd0d3 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_libANGLE_renderer_driver__utils.cpp
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_libANGLE_renderer_driver__utils.cpp
@@ -1,52 +1,52 @@
---- src/3rdparty/chromium/third_party/angle/src/libANGLE/renderer/driver_utils.cpp.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/third_party/angle/src/libANGLE/renderer/driver_utils.cpp.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/angle/src/libANGLE/renderer/driver_utils.cpp
-@@ -16,7 +16,7 @@
+@@ -17,7 +17,7 @@
  #    include <sys/system_properties.h>
  #endif
  
 -#if defined(ANGLE_PLATFORM_LINUX)
 +#if defined(ANGLE_PLATFORM_POSIX)
  #    include <sys/utsname.h>
  #endif
  
-@@ -206,7 +206,7 @@ OSVersion GetMacOSVersion()
+@@ -207,7 +207,7 @@ OSVersion GetMacOSVersion()
  }
  #endif
  
 -#if defined(ANGLE_PLATFORM_LINUX)
 +#if defined(ANGLE_PLATFORM_POSIX)
  bool ParseLinuxOSVersion(const char *version, int *major, int *minor, int *patch)
  {
      errno = 0;  // reset global error flag.
-@@ -218,6 +218,14 @@ bool ParseLinuxOSVersion(const char *version, int *maj
+@@ -219,6 +219,14 @@ bool ParseLinuxOSVersion(const char *version, int *maj
      }
  
      *minor = static_cast<int>(strtol(next + 1, &next, 10));
 +#if defined(__FreeBSD__)
 +    if (next == nullptr || *next != '-' || errno != 0)
 +    {
 +        return false;
 +    }
 +
 +    *patch = 0;
 +#else
      if (next == nullptr || *next != '.' || errno != 0)
      {
          return false;
-@@ -228,6 +236,7 @@ bool ParseLinuxOSVersion(const char *version, int *maj
+@@ -229,6 +237,7 @@ bool ParseLinuxOSVersion(const char *version, int *maj
      {
          return false;
      }
 +#endif
  
      return true;
  }
-@@ -235,7 +244,7 @@ bool ParseLinuxOSVersion(const char *version, int *maj
+@@ -236,7 +245,7 @@ OSVersion GetLinuxOSVersion()
  
  OSVersion GetLinuxOSVersion()
  {
 -#if defined(ANGLE_PLATFORM_LINUX)
 +#if defined(ANGLE_PLATFORM_POSIX)
      struct utsname uname_info;
      if (uname(&uname_info) != 0)
      {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_libANGLE_renderer_driver__utils.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_libANGLE_renderer_driver__utils.h
index 71eae3ed3bdd..e05a550f7d98 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_libANGLE_renderer_driver__utils.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_libANGLE_renderer_driver__utils.h
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/third_party/angle/src/libANGLE/renderer/driver_utils.h.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/third_party/angle/src/libANGLE/renderer/driver_utils.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/angle/src/libANGLE/renderer/driver_utils.h
-@@ -107,7 +107,7 @@ inline bool IsWindows()
+@@ -145,7 +145,7 @@ inline bool IsLinux()
  
  inline bool IsLinux()
  {
 -#if defined(ANGLE_PLATFORM_LINUX)
 +#if defined(ANGLE_PLATFORM_POSIX)
      return true;
  #else
      return false;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_libANGLE_renderer_vulkan_DisplayVk__api.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_libANGLE_renderer_vulkan_DisplayVk__api.h
index 1a15bf015cbd..af770e8b5d08 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_libANGLE_renderer_vulkan_DisplayVk__api.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_angle_src_libANGLE_renderer_vulkan_DisplayVk__api.h
@@ -1,11 +1,15 @@
---- src/3rdparty/chromium/third_party/angle/src/libANGLE/renderer/vulkan/DisplayVk_api.h.orig	2020-04-08 09:41:36 UTC
+--- src/3rdparty/chromium/third_party/angle/src/libANGLE/renderer/vulkan/DisplayVk_api.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/angle/src/libANGLE/renderer/vulkan/DisplayVk_api.h
-@@ -19,7 +19,7 @@ bool IsVulkanWin32DisplayAvailable();
+@@ -19,10 +19,10 @@ DisplayImpl *CreateVulkanWin32Display(const egl::Displ
  DisplayImpl *CreateVulkanWin32Display(const egl::DisplayState &state);
  #endif  // defined(ANGLE_PLATFORM_WINDOWS)
  
 -#if defined(ANGLE_PLATFORM_LINUX)
 +#if defined(ANGLE_PLATFORM_POSIX)
  bool IsVulkanXcbDisplayAvailable();
  DisplayImpl *CreateVulkanXcbDisplay(const egl::DisplayState &state);
- #endif  // defined(ANGLE_PLATFORM_LINUX)
+-#endif  // defined(ANGLE_PLATFORM_LINUX)
++#endif  // defined(ANGLE_PLATFORM_POSIX)
+ 
+ #if defined(ANGLE_PLATFORM_ANDROID)
+ bool IsVulkanAndroidDisplayAvailable();
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_angle_third__party_vulkan-loader_src_loader_loader.c b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_angle_third__party_vulkan-loader_src_loader_loader.c
index ed18d6ae3f53..df769942712a 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_angle_third__party_vulkan-loader_src_loader_loader.c
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_angle_third__party_vulkan-loader_src_loader_loader.c
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/third_party/angle/third_party/vulkan-loader/src/loader/loader.c.orig	2020-03-16 14:04:24 UTC
+--- src/3rdparty/chromium/third_party/angle/third_party/vulkan-loader/src/loader/loader.c.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/angle/third_party/vulkan-loader/src/loader/loader.c
-@@ -229,7 +229,7 @@ void *loader_device_heap_realloc(const struct loader_d
+@@ -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/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_BUILD.gn
index 2a19ba1afb39..d2fbffbd58ec 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_BUILD.gn
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_BUILD.gn
@@ -1,13 +1,13 @@
---- src/3rdparty/chromium/third_party/blink/renderer/BUILD.gn.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/third_party/blink/renderer/BUILD.gn.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/blink/renderer/BUILD.gn
-@@ -45,8 +45,8 @@ config("inside_blink") {
+@@ -55,8 +55,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/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_controller_blink__initializer.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_controller_blink__initializer.cc
index f44d356e1fa9..df41f0dd0493 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_controller_blink__initializer.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_controller_blink__initializer.cc
@@ -1,34 +1,34 @@
---- src/3rdparty/chromium/third_party/blink/renderer/controller/blink_initializer.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/third_party/blink/renderer/controller/blink_initializer.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/blink/renderer/controller/blink_initializer.cc
-@@ -65,11 +65,11 @@
+@@ -68,11 +68,11 @@
  #include "third_party/blink/renderer/controller/oom_intervention_impl.h"
  #endif
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include "third_party/blink/renderer/controller/memory_usage_monitor_posix.h"
  #endif
  
--#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_MACOSX) || \
-+#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_MACOSX) || defined(OS_BSD) || \
-     defined(OS_WIN)
+-#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_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"
-@@ -146,7 +146,7 @@ void InitializeCommon(Platform* platform, mojo::Binder
+@@ -154,7 +154,7 @@ void InitializeCommon(Platform* platform, mojo::Binder
    CrashMemoryMetricsReporterImpl::Instance();
  #endif
  
--#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_MACOSX) || \
-+#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_MACOSX) || defined(OS_BSD) || \
-     defined(OS_WIN)
+-#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_MAC) || defined(OS_WIN)
    // Initialize UserLevelMemoryPressureSignalGenerator so it starts monitoring.
    if (UserLevelMemoryPressureSignalGenerator::Enabled())
-@@ -192,7 +192,7 @@ void BlinkInitializer::RegisterInterfaces(mojo::Binder
-                   &CrashMemoryMetricsReporterImpl::Bind)),
+@@ -212,7 +212,7 @@ void BlinkInitializer::RegisterInterfaces(mojo::Binder
                main_thread->GetTaskRunner());
  #endif
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    binders.Add(ConvertToBaseRepeatingCallback(
                    CrossThreadBindRepeating(&MemoryUsageMonitorPosix::Bind)),
                main_thread->GetTaskRunner());
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_controller_memory__usage__monitor__posix.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_controller_memory__usage__monitor__posix.cc
index 7755c7d6c409..3f3f783d137d 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_controller_memory__usage__monitor__posix.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_controller_memory__usage__monitor__posix.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/third_party/blink/renderer/controller/memory_usage_monitor_posix.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/third_party/blink/renderer/controller/memory_usage_monitor_posix.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/blink/renderer/controller/memory_usage_monitor_posix.cc
 @@ -134,7 +134,7 @@ void MemoryUsageMonitorPosix::SetProcFiles(base::File 
    status_fd_.reset(status_file.TakePlatformFile());
  }
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  // static
  void MemoryUsageMonitorPosix::Bind(
      mojo::PendingReceiver<mojom::blink::MemoryUsageMonitorLinux> receiver) {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_controller_memory__usage__monitor__posix.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_controller_memory__usage__monitor__posix.h
index e26f4d71f894..8856670b717a 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_controller_memory__usage__monitor__posix.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_controller_memory__usage__monitor__posix.h
@@ -1,47 +1,47 @@
---- src/3rdparty/chromium/third_party/blink/renderer/controller/memory_usage_monitor_posix.h.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/third_party/blink/renderer/controller/memory_usage_monitor_posix.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/blink/renderer/controller/memory_usage_monitor_posix.h
 @@ -12,7 +12,7 @@
  #include "third_party/blink/renderer/controller/controller_export.h"
  #include "third_party/blink/renderer/controller/memory_usage_monitor.h"
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include "third_party/blink/public/mojom/memory_usage_monitor_linux.mojom-blink.h"
  #endif
  
-@@ -21,7 +21,7 @@ namespace blink {
+@@ -21,7 +21,7 @@ class CONTROLLER_EXPORT MemoryUsageMonitorPosix
  // MemoryUsageMonitor implementation for Android and Linux.
  class CONTROLLER_EXPORT MemoryUsageMonitorPosix
      : public MemoryUsageMonitor
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
      ,
        public mojom::blink::MemoryUsageMonitorLinux
  #endif
 @@ -29,7 +29,7 @@ class CONTROLLER_EXPORT MemoryUsageMonitorPosix
   public:
    MemoryUsageMonitorPosix() = default;
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    static void Bind(
        mojo::PendingReceiver<mojom::blink::MemoryUsageMonitorLinux> receiver);
  #endif
 @@ -47,7 +47,7 @@ class CONTROLLER_EXPORT MemoryUsageMonitorPosix
                                                uint64_t* vm_size,
                                                uint64_t* vm_hwm_size);
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    // mojom::MemoryUsageMonitorLinux implementations:
    void SetProcFiles(base::File statm_file, base::File status_file) override;
  #endif
 @@ -65,7 +65,7 @@ class CONTROLLER_EXPORT MemoryUsageMonitorPosix
    base::ScopedFD statm_fd_;
    base::ScopedFD status_fd_;
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    mojo::Receiver<mojom::blink::MemoryUsageMonitorLinux> receiver_{this};
  #endif
  };
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_clipboard_system__clipboard.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_clipboard_system__clipboard.cc
new file mode 100644
index 000000000000..a7567b319a56
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_clipboard_system__clipboard.cc
@@ -0,0 +1,15 @@
+--- src/3rdparty/chromium/third_party/blink/renderer/core/clipboard/system_clipboard.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/third_party/blink/renderer/core/clipboard/system_clipboard.cc
+@@ -41,10 +41,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)
+   is_selection_buffer_available_ =
+       frame->GetSettings()->GetSelectionClipboardBufferAvailable();
+-#endif  // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif  // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ }
+ 
+ bool SystemClipboard::IsSelectionMode() const {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_editing_editing__behavior.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_editing_editing__behavior.cc
index 9ac3c41c233e..abf891dfebe3 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_editing_editing__behavior.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_editing_editing__behavior.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/third_party/blink/renderer/core/editing/editing_behavior.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/third_party/blink/renderer/core/editing/editing_behavior.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/blink/renderer/core/editing/editing_behavior.cc
-@@ -270,7 +270,7 @@ bool EditingBehavior::ShouldInsertCharacter(const Keyb
+@@ -274,7 +274,7 @@ bool EditingBehavior::ShouldInsertCharacter(const Keyb
    // unexpected behaviour
    if (ch < ' ')
      return false;
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    // According to XKB map no keyboard combinations with ctrl key are mapped to
    // printable characters, however we need the filter as the DomKey/text could
    // contain printable characters.
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_exported_web__frame__test.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_exported_web__frame__test.cc
new file mode 100644
index 000000000000..e3d43caa15cd
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_exported_web__frame__test.cc
@@ -0,0 +1,20 @@
+--- src/3rdparty/chromium/third_party/blink/renderer/core/exported/web_frame_test.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/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, EditableDiv) {
+ 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/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc
index 6023a82edc49..3c49a43247fb 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.cc
-@@ -34,7 +34,7 @@ namespace {
- constexpr TimeDelta kSlackBeforeDeadline = TimeDelta::FromMilliseconds(1);
+@@ -43,7 +43,7 @@ constexpr base::TimeDelta kEncodeRowSlackBeforeDeadlin
+     base::TimeDelta::FromMicroseconds(100);
  
  /* The value is based on user statistics on Nov 2017. */
--#if (defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN))
-+#if (defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)) || defined(OS_BSD)
+-#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))
  const double kIdleTaskStartTimeoutDelayMs = 1000.0;
  #else
- const double kIdleTaskStartTimeoutDelayMs = 4000.0;  // For ChromeOS, Mobile
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_html_forms_internal__popup__menu.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_html_forms_internal__popup__menu.cc
index 0b01fa34629f..e3d9d8c07b15 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_html_forms_internal__popup__menu.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_html_forms_internal__popup__menu.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/third_party/blink/renderer/core/html/forms/internal_popup_menu.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/third_party/blink/renderer/core/html/forms/internal_popup_menu.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/blink/renderer/core/html/forms/internal_popup_menu.cc
-@@ -126,7 +126,7 @@ class InternalPopupMenu::ItemIterationContext {
+@@ -155,7 +155,7 @@ class InternalPopupMenu::ItemIterationContext {
          is_in_group_(false),
          buffer_(buffer) {
      DCHECK(buffer_);
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
      // On other platforms, the <option> background color is the same as the
      // <select> background color. On Linux, that makes the <option>
      // background color very dark, so by default, try to use a lighter
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_inspector_inspector__memory__agent.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_inspector_inspector__memory__agent.cc
index 16230249c0d9..ae65f7535dc4 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_inspector_inspector__memory__agent.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_inspector_inspector__memory__agent.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_memory_agent.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_memory_agent.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/blink/renderer/core/inspector/inspector_memory_agent.cc
-@@ -184,7 +184,7 @@ InspectorMemoryAgent::GetSamplingProfileById(uint32_t 
+@@ -186,7 +186,7 @@ Vector<String> InspectorMemoryAgent::Symbolize(
  
  Vector<String> InspectorMemoryAgent::Symbolize(
      const WebVector<void*>& addresses) {
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    // TODO(alph): Move symbolization to the client.
    Vector<void*> addresses_to_symbolize;
    for (size_t i = 0; i < addresses.size(); i++) {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_layout_layout__view.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_layout_layout__view.cc
index 4f57f5e25253..9e90db3f4dc4 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_layout_layout__view.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_layout_layout__view.cc
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/third_party/blink/renderer/core/layout/layout_view.cc.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/third_party/blink/renderer/core/layout/layout_view.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/blink/renderer/core/layout/layout_view.cc
-@@ -58,7 +58,7 @@
+@@ -62,7 +62,7 @@
+ #include "third_party/blink/renderer/platform/instrumentation/tracing/traced_value.h"
  #include "third_party/blink/renderer/platform/runtime_enabled_features.h"
- #include "third_party/blink/renderer/platform/transforms/transform_state.h"
  
 -#if defined(OS_LINUX) || defined(OS_CHROMEOS)
 +#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include "third_party/blink/renderer/platform/fonts/font_cache.h"
  #endif
  
-@@ -321,7 +321,7 @@ void LayoutView::UpdateLayout() {
+@@ -347,7 +347,7 @@ void LayoutView::UpdateLayout() {
    DCHECK(!layout_state_);
    LayoutState root_layout_state(*this);
  
 -#if defined(OS_LINUX) || defined(OS_CHROMEOS)
 +#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    // The font code in FontPlatformData does not have a direct connection to the
    // document, the frame or anything from which we could retrieve the device
    // scale factor. After using zoom for DSF, the GraphicsContext does only ever
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_paint_paint__layer.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_paint_paint__layer.cc
index bb032d641dc2..67bc5f89665f 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_paint_paint__layer.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_paint_paint__layer.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/third_party/blink/renderer/core/paint/paint_layer.cc.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/third_party/blink/renderer/core/paint/paint_layer.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/blink/renderer/core/paint/paint_layer.cc
-@@ -104,7 +104,7 @@ namespace {
+@@ -110,7 +110,7 @@ static CompositingQueryMode g_compositing_query_mode =
  static CompositingQueryMode g_compositing_query_mode =
      kCompositingQueriesAreOnlyAllowedInCertainDocumentLifecyclePhases;
  
--#ifdef OS_LINUX
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  struct SameSizeAsPaintLayer : DisplayItemClient {
    // The bit fields may fit into the machine word of DisplayItemClient which
    // has only 8-bit data.
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc
index 6e2d5d46b40d..63c4ee8ee391 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/third_party/blink/renderer/core/scroll/scrollbar_theme_aura.cc.orig	2020-03-16 14:04:24 UTC
+--- src/3rdparty/chromium/third_party/blink/renderer/core/scroll/scrollbar_theme_aura.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/blink/renderer/core/scroll/scrollbar_theme_aura.cc
-@@ -152,7 +152,7 @@ bool ScrollbarThemeAura::SupportsDragSnapBack() const 
+@@ -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)
    return false;
- #endif
- 
-@@ -335,7 +335,7 @@ ScrollbarPart ScrollbarThemeAura::PartsToInvalidateOnT
+ #else
+   return true;
+@@ -303,7 +303,7 @@ bool ScrollbarThemeAura::ShouldCenterOnThumb(const Scr
  
  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 (event.button == WebPointerProperties::Button::kMiddle)
      return true;
  #endif
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_renderer_media_audio_audio__device__factory.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_modules_media_audio_web__audio__device__factory.cc
similarity index 54%
rename from www/qt5-webengine/files/patch-src_3rdparty_chromium_content_renderer_media_audio_audio__device__factory.cc
rename to www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_modules_media_audio_web__audio__device__factory.cc
index 31996878e7e2..fc99085d6896 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_renderer_media_audio_audio__device__factory.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_modules_media_audio_web__audio__device__factory.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/content/renderer/media/audio/audio_device_factory.cc.orig	2020-11-07 01:22:36 UTC
-+++ src/3rdparty/chromium/content/renderer/media/audio/audio_device_factory.cc
-@@ -36,7 +36,7 @@ AudioDeviceFactory* AudioDeviceFactory::factory_ = nul
+--- src/3rdparty/chromium/third_party/blink/renderer/modules/media/audio/web_audio_device_factory.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/third_party/blink/renderer/modules/media/audio/web_audio_device_factory.cc
+@@ -33,7 +33,7 @@ namespace {
  namespace {
  
- #if defined(OS_WIN) || defined(OS_MACOSX) || \
+ #if defined(OS_WIN) || defined(OS_MAC) || \
 -    (defined(OS_LINUX) && !defined(OS_CHROMEOS))
 +    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
  // 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/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_modules_mediastream_processed__local__audio__source.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_modules_mediastream_processed__local__audio__source.cc
index 2c123e619050..d8526a0dd034 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_modules_mediastream_processed__local__audio__source.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_modules_mediastream_processed__local__audio__source.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/third_party/blink/renderer/modules/mediastream/processed_local_audio_source.cc.orig	2020-03-16 14:04:24 UTC
+--- src/3rdparty/chromium/third_party/blink/renderer/modules/mediastream/processed_local_audio_source.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/blink/renderer/modules/mediastream/processed_local_audio_source.cc
-@@ -430,7 +430,7 @@ void ProcessedLocalAudioSource::CaptureUsingProcessor(
+@@ -417,7 +417,7 @@ void ProcessedLocalAudioSource::CaptureUsingProcessor(
      bool key_pressed) {
- #if defined(OS_WIN) || defined(OS_MACOSX)
+ #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)
    // 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/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_modules_peerconnection_webrtc__audio__renderer__test.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_modules_peerconnection_webrtc__audio__renderer__test.cc
new file mode 100644
index 000000000000..806e2fc878ba
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_modules_peerconnection_webrtc__audio__renderer__test.cc
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/third_party/blink/renderer/modules/peerconnection/webrtc_audio_renderer_test.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/third_party/blink/renderer/modules/peerconnection/webrtc_audio_renderer_test.cc
+@@ -272,7 +272,7 @@ TEST_F(MAYBE_WebRtcAudioRendererTest, VerifySinkParame
+ TEST_F(MAYBE_WebRtcAudioRendererTest, VerifySinkParameters) {
+   SetupRenderer(kDefaultOutputDeviceId);
+   renderer_proxy_->Start();
+-#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_FUCHSIA)
+   static const int kExpectedBufferSize = kHardwareSampleRate / 100;
+ #elif defined(OS_ANDROID)
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_modules_webaudio_audio__worklet__thread__test.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_modules_webaudio_audio__worklet__thread__test.cc
new file mode 100644
index 000000000000..70f146bc0759
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_modules_webaudio_audio__worklet__thread__test.cc
@@ -0,0 +1,13 @@
+--- src/3rdparty/chromium/third_party/blink/renderer/modules/webaudio/audio_worklet_thread_test.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/third_party/blink/renderer/modules/webaudio/audio_worklet_thread_test.cc
+@@ -404,8 +404,8 @@ class AudioWorkletThreadPriorityTest
+         base::PlatformThread::GetCurrentThreadPriority();
+ 
+     // TODO(crbug.com/1022888): The worklet thread priority is always NORMAL
+-    // on OS_LINUX and OS_CHROMEOS regardless of the thread priority setting.
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++    // on OS_LINUX, OS_CHROMEOS and OS_BSD regardless of the thread priority setting.
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+     if (expected_priority == base::ThreadPriority::REALTIME_AUDIO ||
+         expected_priority == base::ThreadPriority::DISPLAY) {
+       EXPECT_EQ(actual_priority, base::ThreadPriority::NORMAL);
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_BUILD.gn
index c8fc7d38ab1d..34252ccea6d0 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_BUILD.gn
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_BUILD.gn
@@ -1,10 +1,10 @@
---- src/3rdparty/chromium/third_party/blink/renderer/platform/BUILD.gn.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/third_party/blink/renderer/platform/BUILD.gn.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/blink/renderer/platform/BUILD.gn
-@@ -144,6 +144,7 @@ executable("character_data_generator") {
+@@ -111,6 +111,7 @@ executable("character_data_generator") {
      "//build/win:default_exe_manifest",
      "//third_party/icu",
    ]
 +  libs = [ "cxxrt" ]
  }
  
  # This isn't strictly necessary since we can just add the deps to "platform",
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_fonts_font__cache.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_fonts_font__cache.cc
index bebd6e0da392..24973305658c 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_fonts_font__cache.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_fonts_font__cache.cc
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/third_party/blink/renderer/platform/fonts/font_cache.cc.orig	2020-04-08 09:41:36 UTC
+--- src/3rdparty/chromium/third_party/blink/renderer/platform/fonts/font_cache.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/blink/renderer/platform/fonts/font_cache.cc
-@@ -76,7 +76,7 @@ static const char kColorEmojiLocale[] = "und-Zsye";
+@@ -80,7 +80,7 @@ SkFontMgr* FontCache::static_font_manager_ = nullptr;
  
  SkFontMgr* FontCache::static_font_manager_ = nullptr;
  
 -#if defined(OS_LINUX) || defined(OS_CHROMEOS)
 +#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  float FontCache::device_scale_factor_ = 1.0;
  #endif
  
-@@ -115,7 +115,7 @@ FontCache::FontCache()
+@@ -120,7 +120,7 @@ FontPlatformData* FontCache::SystemFontPlatformData(
  FontPlatformData* FontCache::SystemFontPlatformData(
      const FontDescription& font_description) {
    const AtomicString& family = FontCache::SystemFontFamily();
--#if defined(OS_LINUX) || defined(OS_FUCHSIA)
-+#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
    if (family.IsEmpty() || family == font_family_names::kSystemUi)
      return nullptr;
  #else
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_fonts_font__cache.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_fonts_font__cache.h
index d828f921c22b..5ddc96c0a0df 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_fonts_font__cache.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_fonts_font__cache.h
@@ -1,58 +1,58 @@
---- src/3rdparty/chromium/third_party/blink/renderer/platform/fonts/font_cache.h.orig	2020-04-08 09:41:36 UTC
+--- src/3rdparty/chromium/third_party/blink/renderer/platform/fonts/font_cache.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/blink/renderer/platform/fonts/font_cache.h
 @@ -58,7 +58,7 @@
  #include "third_party/skia/include/core/SkFontMgr.h"
  #include "third_party/skia/include/core/SkRefCnt.h"
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include "ui/gfx/font_fallback_linux.h"
  #endif
  
-@@ -166,7 +166,7 @@ class PLATFORM_EXPORT FontCache {
+@@ -167,7 +167,7 @@ class PLATFORM_EXPORT FontCache {
    sk_sp<SkFontMgr> FontManager() { return font_manager_; }
    static void SetFontManager(sk_sp<SkFontMgr>);
  
 -#if defined(OS_LINUX) || defined(OS_CHROMEOS)
 +#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    // These are needed for calling QueryRenderStyleForStrike, since
    // gfx::GetFontRenderParams makes distinctions based on DSF.
    static float DeviceScaleFactor() { return device_scale_factor_; }
-@@ -241,11 +241,11 @@ class PLATFORM_EXPORT FontCache {
+@@ -242,11 +242,11 @@ class PLATFORM_EXPORT FontCache {
        const FontDescription&);
  #endif  // defined(OS_ANDROID)
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    static bool GetFontForCharacter(UChar32,
                                    const char* preferred_locale,
                                    gfx::FallbackFontData*);
--#endif  // defined(OS_LINUX)
-+#endif  // defined(OS_LINUX) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
    scoped_refptr<SimpleFontData> FontDataFromFontPlatformData(
        const FontPlatformData*,
-@@ -317,12 +317,12 @@ class PLATFORM_EXPORT FontCache {
+@@ -320,12 +320,12 @@ class PLATFORM_EXPORT FontCache {
                                     const FontFaceCreationParams&,
                                     std::string& name);
  
--#if defined(OS_ANDROID) || defined(OS_LINUX)
-+#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    static AtomicString GetFamilyNameForCharacter(SkFontMgr*,
                                                  UChar32,
                                                  const FontDescription&,
                                                  FontFallbackPriority);
--#endif  // defined(OS_ANDROID) || defined(OS_LINUX)
-+#endif  // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+-#endif  // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
    scoped_refptr<SimpleFontData> FallbackOnStandardFontStyle(
        const FontDescription&,
-@@ -356,7 +356,7 @@ class PLATFORM_EXPORT FontCache {
+@@ -365,7 +365,7 @@ class PLATFORM_EXPORT FontCache {
    std::unique_ptr<FallbackFamilyStyleCache> fallback_params_cache_;
  #endif  // defined(OS_WIN)
  
 -#if defined(OS_LINUX) || defined(OS_CHROMEOS)
 +#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    static float device_scale_factor_;
  #endif
  
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_fonts_font__description.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_fonts_font__description.cc
index 9e12869885c9..4f06371a1ead 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_fonts_font__description.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_fonts_font__description.cc
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/third_party/blink/renderer/platform/fonts/font_description.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/third_party/blink/renderer/platform/fonts/font_description.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/blink/renderer/platform/fonts/font_description.cc
-@@ -38,7 +38,7 @@
+@@ -39,7 +39,7 @@
  #include "third_party/blink/renderer/platform/wtf/text/string_hash.h"
  #include "third_party/blink/renderer/platform/wtf/text/string_hasher.h"
  
 -#if defined(OS_LINUX) || defined(OS_CHROMEOS)
 +#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include "third_party/blink/renderer/platform/fonts/font_cache.h"
  #endif
  
-@@ -223,7 +223,7 @@ FontCacheKey FontDescription::CacheKey(
-       static_cast<unsigned>(fields_.orientation_) << 1 |       // bit 2-3
-       static_cast<unsigned>(fields_.subpixel_text_position_);  // bit 1
+@@ -239,7 +239,7 @@ FontCacheKey FontDescription::CacheKey(
+       static_cast<unsigned>(fields_.orientation_) << 1 |          // bit 2-3
+       static_cast<unsigned>(fields_.subpixel_text_position_);     // bit 1
  
 -#if defined(OS_LINUX) || defined(OS_CHROMEOS)
 +#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    float device_scale_factor_for_key = FontCache::DeviceScaleFactor();
  #else
    float device_scale_factor_for_key = 1.0f;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_fonts_font__metrics.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_fonts_font__metrics.cc
index 3030b823602b..1659cff177d2 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_fonts_font__metrics.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_fonts_font__metrics.cc
@@ -1,29 +1,29 @@
---- src/3rdparty/chromium/third_party/blink/renderer/platform/fonts/font_metrics.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/third_party/blink/renderer/platform/fonts/font_metrics.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/blink/renderer/platform/fonts/font_metrics.cc
-@@ -38,7 +38,7 @@
+@@ -38,7 +38,7 @@ namespace blink {
  
  namespace blink {
  
--#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA)
-+#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || 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)
  // This is the largest VDMX table which we'll try to load and parse.
  static const size_t kMaxVDMXTableSize = 1024 * 1024;  // 1 MB
- #endif
-@@ -60,7 +60,7 @@ void FontMetrics::AscentDescentWithHacks(
+@@ -68,7 +68,7 @@ void FontMetrics::AscentDescentWithHacks(
    int vdmx_ascent = 0, vdmx_descent = 0;
    bool is_vdmx_valid = false;
  
--#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA)
-+#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || 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)
    // Manually digging up VDMX metrics is only applicable when bytecode hinting
    // using FreeType.  With DirectWrite or CoreText, no bytecode hinting is ever
-   // done.  This code should be pushed into FreeType (hinted font metrics).
-@@ -106,7 +106,7 @@ void FontMetrics::AscentDescentWithHacks(
+@@ -116,7 +116,7 @@ void FontMetrics::AscentDescentWithHacks(
        visual_overflow_inflation_for_ascent = 1;
      if (descent < metrics.fDescent) {
        visual_overflow_inflation_for_descent = 1;
--#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA)
-+#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || 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)
        // When subpixel positioning is enabled, if the descent is rounded down,
        // the descent part of the glyph may be truncated when displayed in a
-       // 'overflow: hidden' container.  To avoid that, borrow 1 unit from the
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc
index b5303d7aba74..1345491d7a4d 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/third_party/blink/renderer/platform/fonts/font_unique_name_lookup.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/third_party/blink/renderer/platform/fonts/font_unique_name_lookup.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/blink/renderer/platform/fonts/font_unique_name_lookup.cc
 @@ -8,7 +8,7 @@
  #if defined(OS_ANDROID)
  #include "third_party/blink/public/mojom/font_unique_name_lookup/font_unique_name_lookup.mojom-blink.h"
  #include "third_party/blink/renderer/platform/fonts/android/font_unique_name_lookup_android.h"
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include "third_party/blink/renderer/platform/fonts/linux/font_unique_name_lookup_linux.h"
  #elif defined(OS_WIN)
  #include "third_party/blink/renderer/platform/fonts/win/font_unique_name_lookup_win.h"
-@@ -23,7 +23,7 @@ std::unique_ptr<FontUniqueNameLookup>
+@@ -23,7 +23,7 @@ FontUniqueNameLookup::GetPlatformUniqueNameLookup() {
  FontUniqueNameLookup::GetPlatformUniqueNameLookup() {
  #if defined(OS_ANDROID)
    return std::make_unique<FontUniqueNameLookupAndroid>();
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    return std::make_unique<FontUniqueNameLookupLinux>();
  #elif defined(OS_WIN)
    return std::make_unique<FontUniqueNameLookupWin>();
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_fonts_shaping_harfbuzz__shaper__test.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_fonts_shaping_harfbuzz__shaper__test.cc
new file mode 100644
index 000000000000..e6c7796c3df0
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_fonts_shaping_harfbuzz__shaper__test.cc
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_shaper_test.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_shaper_test.cc
+@@ -651,7 +651,7 @@ TEST_P(ShapeParameterTest, MaxGlyphsClusterDevanagari)
+   HarfBuzzShaper shaper(string);
+   scoped_refptr<ShapeResult> result = ShapeWithParameter(&shaper);
+   EXPECT_EQ(length, result->NumCharacters());
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+   // Linux and Fuchsia use Lohit Devanagari. When using that font the shaper
+   // returns 32767 glyphs instead of 32769.
+   // TODO(crbug.com/933551): Add Noto Sans Devanagari to
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc
index 70981e0d3b55..562b114d081a 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc
@@ -1,38 +1,38 @@
---- src/3rdparty/chromium/third_party/blink/renderer/platform/fonts/skia/font_cache_skia.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/third_party/blink/renderer/platform/fonts/skia/font_cache_skia.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/blink/renderer/platform/fonts/skia/font_cache_skia.cc
-@@ -59,7 +59,7 @@ AtomicString ToAtomicString(const SkString& str) {
+@@ -61,7 +61,7 @@ AtomicString ToAtomicString(const SkString& str) {
    return AtomicString::FromUTF8(str.c_str(), str.size());
  }
  
--#if defined(OS_ANDROID) || defined(OS_LINUX)
-+#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  // This function is called on android or when we are emulating android fonts on
  // linux and the embedder has overriden the default fontManager with
  // WebFontRendering::setSkiaFontMgr.
-@@ -82,7 +82,7 @@ AtomicString FontCache::GetFamilyNameForCharacter(
+@@ -84,7 +84,7 @@ AtomicString FontCache::GetFamilyNameForCharacter(
    typeface->getFamilyName(&skia_family_name);
    return ToAtomicString(skia_family_name);
  }
--#endif  // defined(OS_ANDROID) || defined(OS_LINUX)
-+#endif  // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+-#endif  // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
  void FontCache::PlatformInit() {}
  
-@@ -227,7 +227,7 @@ sk_sp<SkTypeface> FontCache::CreateTypeface(
+@@ -229,7 +229,7 @@ sk_sp<SkTypeface> FontCache::CreateTypeface(
    }
  #endif
  
--#if defined(OS_LINUX) || defined(OS_WIN)
-+#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN) || defined(OS_BSD)
    // On linux if the fontManager has been overridden then we should be calling
    // the embedder provided font Manager rather than calling
    // SkTypeface::CreateFromName which may redirect the call to the default font
-@@ -254,7 +254,7 @@ std::unique_ptr<FontPlatformData> FontCache::CreateFon
+@@ -256,7 +256,7 @@ std::unique_ptr<FontPlatformData> FontCache::CreateFon
    std::string name;
  
    sk_sp<SkTypeface> typeface;
--#if defined(OS_ANDROID) || defined(OS_LINUX)
-+#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    if (alternate_name == AlternateFontName::kLocalUniqueFace &&
        RuntimeEnabledFeatures::FontSrcLocalMatchingEnabled()) {
      typeface = CreateTypefaceFromUniqueName(creation_params);
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_graphics_image__frame__generator__test.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_graphics_image__frame__generator__test.cc
new file mode 100644
index 000000000000..f44058b595e6
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_graphics_image__frame__generator__test.cc
@@ -0,0 +1,19 @@
+--- src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/image_frame_generator_test.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/image_frame_generator_test.cc
+@@ -244,14 +244,14 @@ static void DecodeThreadMain(ImageFrameGenerator* gene
+                             cc::PaintImage::kDefaultGeneratorClientId);
+ }
+ 
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // TODO(crbug.com/948641)
+ #define MAYBE_incompleteDecodeBecomesCompleteMultiThreaded \
+   DISABLED_incompleteDecodeBecomesCompleteMultiThreaded
+ #else
+ #define MAYBE_incompleteDecodeBecomesCompleteMultiThreaded \
+   incompleteDecodeBecomesCompleteMultiThreaded
+-#endif  // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ TEST_F(ImageFrameGeneratorTest,
+        MAYBE_incompleteDecodeBecomesCompleteMultiThreaded) {
+   SetFrameStatus(ImageFrame::kFramePartial);
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_graphics_video__frame__submitter.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_graphics_video__frame__submitter.cc
index d8e545acce13..7a9eb2ad8cf8 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_graphics_video__frame__submitter.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_graphics_video__frame__submitter.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/video_frame_submitter.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/video_frame_submitter.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/video_frame_submitter.cc
-@@ -187,7 +187,7 @@ void VideoFrameSubmitter::OnBeginFrame(
+@@ -192,7 +192,7 @@ void VideoFrameSubmitter::OnBeginFrame(
      if (viz::FrameTokenGT(pair.key, *next_frame_token_))
        continue;
- 
--#ifdef OS_LINUX
-+#if defined(OS_LINUX) || defined(OS_BSD)
+     auto& feedback = pair.value.presentation_feedback;
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
      // TODO: On Linux failure flag is unreliable, and perfectly rendered frames
      // are reported as failures all the time.
      bool presentation_failure = false;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_wtf_container__annotations.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_wtf_container__annotations.h
index 0ef73b8619c9..5187aa6f8a9c 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_wtf_container__annotations.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_wtf_container__annotations.h
@@ -1,27 +1,27 @@
---- src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/container_annotations.h.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/container_annotations.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/container_annotations.h
-@@ -10,7 +10,7 @@
- 
+@@ -11,7 +11,7 @@
  // TODO(ochang): Remove the ARCH_CPU_X86_64 condition to enable this for X86
  // once the crashes there have been fixed: http://crbug.com/461406
--#if defined(ADDRESS_SANITIZER) && defined(OS_LINUX) && defined(ARCH_CPU_X86_64)
-+#if defined(ADDRESS_SANITIZER) && (defined(OS_LINUX) || defined(OS_BSD)) && defined(ARCH_CPU_X86_64)
+ #if defined(ADDRESS_SANITIZER) && \
+-    (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(ARCH_CPU_X86_64)
++    (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && defined(ARCH_CPU_X86_64)
  #define ANNOTATE_CONTIGUOUS_CONTAINER
  #define ANNOTATE_NEW_BUFFER(buffer, capacity, newSize)                       \
    if (buffer) {                                                              \
-@@ -35,13 +35,13 @@
+@@ -36,13 +36,13 @@
    ANNOTATE_NEW_BUFFER(buffer, newCapacity, bufferSize);
  // Annotations require buffers to begin on an 8-byte boundary.
  
--#else  // ADDRESS_SANITIZER && OS_LINUX && ARCH_CPU_X86_64
-+#else  // ADDRESS_SANITIZER && (OS_LINUX || OS_BSD) && ARCH_CPU_X86_64
+-#else  // ADDRESS_SANITIZER && (OS_LINUX || OS_CHROMEOS) && ARCH_CPU_X86_64
++#else  // ADDRESS_SANITIZER && (OS_LINUX || OS_CHROMEOS || OS_BSD) && ARCH_CPU_X86_64
  
  #define ANNOTATE_NEW_BUFFER(buffer, capacity, newSize)
  #define ANNOTATE_DELETE_BUFFER(buffer, capacity, oldSize)
  #define ANNOTATE_CHANGE_SIZE(buffer, capacity, oldSize, newSize)
  #define ANNOTATE_CHANGE_CAPACITY(buffer, oldCapacity, bufferSize, newCapacity)
  
--#endif  // ADDRESS_SANITIZER && OS_LINUX && ARCH_CPU_X86_64
-+#endif  // ADDRESS_SANITIZER && (OS_LINUX || OS_BSD) && ARCH_CPU_X86_64
+-#endif  // ADDRESS_SANITIZER && (OS_LINUX || OS_CHROMEOS) && ARCH_CPU_X86_64
++#endif  // ADDRESS_SANITIZER && (OS_LINUX || OS_CHROMEOS || OS_BSD) && ARCH_CPU_X86_64
  
  #endif  // THIRD_PARTY_BLINK_RENDERER_PLATFORM_WTF_CONTAINER_ANNOTATIONS_H_
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_wtf_stack__util.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_wtf_stack__util.cc
index c3bf9898e807..215824e532db 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_wtf_stack__util.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_wtf_stack__util.cc
@@ -1,14 +1,14 @@
---- src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/stack_util.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/stack_util.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/stack_util.cc
-@@ -17,6 +17,11 @@
+@@ -18,6 +18,11 @@ extern "C" void* __libc_stack_end;  // NOLINT
  extern "C" void* __libc_stack_end;  // NOLINT
  #endif
  
 +#if defined(OS_FREEBSD)
 +#include <sys/signal.h>
 +#include <pthread_np.h>
 +#endif
 +
  namespace WTF {
  
  size_t GetUnderestimatedStackSize() {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_wtf_threading__pthreads.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_wtf_threading__pthreads.cc
index a48ae749837d..6f1944f521bd 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_wtf_threading__pthreads.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_wtf_threading__pthreads.cc
@@ -1,22 +1,22 @@
---- src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/threading_pthreads.cc.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/threading_pthreads.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/threading_pthreads.cc
-@@ -52,12 +52,17 @@
+@@ -50,12 +50,17 @@
  #include <objc/objc-auto.h>
  #endif
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include <sys/syscall.h>
  #endif
  
--#if defined(OS_LINUX) || defined(OS_ANDROID)
-+#if defined(OS_LINUX) || 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)
  #include <unistd.h>
 +#endif
 +
 +#if defined(OS_BSD)
 +#include <sys/signal.h>
 +#include <pthread_np.h>
  #endif
  
  namespace WTF {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_boringssl_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_boringssl_BUILD.gn
deleted file mode 100644
index 5fa1360bfd13..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_boringssl_BUILD.gn
+++ /dev/null
@@ -1,46 +0,0 @@
---- src/3rdparty/chromium/third_party/boringssl/BUILD.gn.orig	2019-05-23 14:39:34.000000000 +0200
-+++ src/3rdparty/chromium/third_party/boringssl/BUILD.gn	2019-10-29 02:28:30.690043000 +0100
-@@ -71,7 +77,7 @@
-     } else if (current_cpu == "x64") {
-       if (is_mac) {
-         sources += crypto_sources_mac_x86_64
--      } else if (is_linux || is_android) {
-+      } else if (is_linux || is_bsd || is_android) {
-         sources += crypto_sources_linux_x86_64
-       } else {
-         public_configs = [ ":no_asm_config" ]
-@@ -79,13 +85,13 @@
-     } else if (current_cpu == "x86") {
-       if (is_mac) {
-         sources += crypto_sources_mac_x86
--      } else if (is_linux || is_android) {
-+      } else if (is_linux || is_bsd || is_android) {
-         sources += crypto_sources_linux_x86
-       } else {
-         public_configs = [ ":no_asm_config" ]
-       }
-     } else if (current_cpu == "arm") {
--      if (is_linux || is_android) {
-+      if (is_linux || is_bsd || is_android) {
-         sources += crypto_sources_linux_arm
-       } else if (is_ios) {
-         sources += crypto_sources_ios_arm
-@@ -93,10 +99,17 @@
-         public_configs = [ ":no_asm_config" ]
-       }
-     } else if (current_cpu == "arm64") {
--      if (is_linux || is_android) {
-+      if (is_linux || is_bsd || is_android) {
-         sources += crypto_sources_linux_aarch64
-       } else if (is_ios) {
-         sources += crypto_sources_ios_aarch64
-+      } else {
-+        public_configs = [ ":no_asm_config" ]
-+      }
-+    } else if (current_cpu == "ppc64") {
-+      if (is_linux || is_bsd) {
-+        # TODO: ppc64 (be) check
-+        sources += crypto_sources_linux_ppc64le
-       } else {
-         public_configs = [ ":no_asm_config" ]
-       }
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_boringssl_src_crypto_cpu-aarch64-linux.c b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_boringssl_src_crypto_cpu-aarch64-linux.c
index c7de9b43aafd..589045ed1ed8 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_boringssl_src_crypto_cpu-aarch64-linux.c
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_boringssl_src_crypto_cpu-aarch64-linux.c
@@ -1,75 +1,73 @@
---- src/3rdparty/chromium/third_party/boringssl/src/crypto/cpu-aarch64-linux.c.orig	2019-10-21 10:14:54 UTC
+--- src/3rdparty/chromium/third_party/boringssl/src/crypto/cpu-aarch64-linux.c.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/boringssl/src/crypto/cpu-aarch64-linux.c
-@@ -14,49 +14,47 @@
+@@ -14,49 +14,45 @@
  
  #include <openssl/cpu.h>
  
 -#if defined(OPENSSL_AARCH64) && defined(OPENSSL_LINUX) && \
 -    !defined(OPENSSL_STATIC_ARMCAP)
 +#if defined(OPENSSL_AARCH64)
  
 -#include <sys/auxv.h>
 -
  #include <openssl/arm_arch.h>
  
  #include "internal.h"
  
 -
  extern uint32_t OPENSSL_armcap_P;
  
 -void OPENSSL_cpuid_setup(void) {
 -  unsigned long hwcap = getauxval(AT_HWCAP);
++#include <sys/types.h>
 +#include <machine/armreg.h>
  
 -  // See /usr/include/asm/hwcap.h on an aarch64 installation for the source of
 -  // these values.
 -  static const unsigned long kNEON = 1 << 1;
 -  static const unsigned long kAES = 1 << 3;
 -  static const unsigned long kPMULL = 1 << 4;
 -  static const unsigned long kSHA1 = 1 << 5;
 -  static const unsigned long kSHA256 = 1 << 6;
 +#ifndef ID_AA64ISAR0_AES_VAL
 +#define ID_AA64ISAR0_AES_VAL ID_AA64ISAR0_AES
 +#endif
-+#ifndef ID_AA64ISAR0_AES_VAL
-+#define ID_AA64ISAR0_AES_VAL ID_AA64ISAR0_AES
-+#endif
 +#ifndef ID_AA64ISAR0_SHA1_VAL
 +#define ID_AA64ISAR0_SHA1_VAL ID_AA64ISAR0_SHA1
 +#endif
 +#ifndef ID_AA64ISAR0_SHA2_VAL
 +#define ID_AA64ISAR0_SHA2_VAL ID_AA64ISAR0_SHA2
 +#endif
  
 -  if ((hwcap & kNEON) == 0) {
 -    // Matching OpenSSL, if NEON is missing, don't report other features
 -    // either.
 -    return;
 -  }
 +void OPENSSL_cpuid_setup(void) {
 +  uint64_t id_aa64isar0;
  
 +  id_aa64isar0 = READ_SPECIALREG(id_aa64isar0_el1);
 +
    OPENSSL_armcap_P |= ARMV7_NEON;
  
 -  if (hwcap & kAES) {
 +  if (ID_AA64ISAR0_AES_VAL(id_aa64isar0) >= ID_AA64ISAR0_AES_BASE) {
      OPENSSL_armcap_P |= ARMV8_AES;
    }
 -  if (hwcap & kPMULL) {
 +  if (ID_AA64ISAR0_AES_VAL(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL) {
      OPENSSL_armcap_P |= ARMV8_PMULL;
    }
 -  if (hwcap & kSHA1) {
 +  if (ID_AA64ISAR0_SHA1_VAL(id_aa64isar0) == ID_AA64ISAR0_SHA1_BASE) {
      OPENSSL_armcap_P |= ARMV8_SHA1;
    }
 -  if (hwcap & kSHA256) {
 +  if(ID_AA64ISAR0_SHA2_VAL(id_aa64isar0) >= ID_AA64ISAR0_SHA2_BASE) {
      OPENSSL_armcap_P |= ARMV8_SHA256;
    }
  }
 -
 -#endif  // OPENSSL_AARCH64 && !OPENSSL_STATIC_ARMCAP
 +#endif  // OPENSSL_AARCH64
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_boringssl_src_third__party_fiat_curve25519.c b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_boringssl_src_third__party_fiat_curve25519.c
deleted file mode 100644
index cfda551ca787..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_boringssl_src_third__party_fiat_curve25519.c
+++ /dev/null
@@ -1,19 +0,0 @@
---- src/3rdparty/chromium/third_party/boringssl/src/third_party/fiat/curve25519.c.orig	2019-11-27 21:12:25 UTC
-+++ src/3rdparty/chromium/third_party/boringssl/src/third_party/fiat/curve25519.c
-@@ -1964,9 +1964,14 @@ int ED25519_verify(const uint8_t *message, size_t mess
-     UINT64_C(0x1000000000000000),
-   };
-   for (size_t i = 3;; i--) {
--    if (scopy.u64[i] > kOrder[i]) {
-+#ifdef OPENSSL_BIGENDIAN
-+    const uint64_t n = CRYPTO_bswap8(scopy.u64[i]);
-+#else
-+    const uint64_t n = scopy.u64[i];
-+#endif
-+    if (n > kOrder[i]) {
-       return 0;
--    } else if (scopy.u64[i] < kOrder[i]) {
-+    } else if (n < kOrder[i]) {
-       break;
-     } else if (i == 0) {
-       return 0;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_build_crashpad__buildconfig.gni b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_build_crashpad__buildconfig.gni
deleted file mode 100644
index a1bff60f9324..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_build_crashpad__buildconfig.gni
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/3rdparty/chromium/third_party/crashpad/crashpad/build/crashpad_buildconfig.gni.orig	2019-05-23 12:39:34 UTC
-+++ src/3rdparty/chromium/third_party/crashpad/crashpad/build/crashpad_buildconfig.gni
-@@ -38,7 +38,7 @@ crashpad_is_standalone = crashpad_dependencies == "sta
- if (crashpad_is_in_chromium) {
-   crashpad_is_mac = is_mac
-   crashpad_is_win = is_win
--  crashpad_is_linux = is_linux
-+  crashpad_is_linux = is_linux && !is_bsd
-   crashpad_is_android = is_android
-   crashpad_is_fuchsia = is_fuchsia
- 
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_client_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_client_BUILD.gn
index eaf1890f2a5d..c44181a42c1a 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_client_BUILD.gn
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_client_BUILD.gn
@@ -1,15 +1,15 @@
---- src/3rdparty/chromium/third_party/crashpad/crashpad/client/BUILD.gn.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/third_party/crashpad/crashpad/client/BUILD.gn.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/crashpad/crashpad/client/BUILD.gn
-@@ -71,6 +71,12 @@ static_library("client") {
+@@ -82,6 +82,12 @@ crashpad_static_library("client") {
      sources += [ "crashpad_client_fuchsia.cc" ]
    }
  
 +  if (crashpad_is_posix) {
 +    sources += [
 +      "crashpad_client_posix.cc",
 +    ]
 +  }
 +
    if (crashpad_is_linux || crashpad_is_android || crashpad_is_fuchsia) {
      sources += [ "crash_report_database_generic.cc" ]
    }
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_client_crashpad__client__posix.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_client_crashpad__client__posix.cc
index 0a9ba065dd3d..35f85a818d0d 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_client_crashpad__client__posix.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_client_crashpad__client__posix.cc
@@ -1,41 +1,42 @@
---- src/3rdparty/chromium/third_party/crashpad/crashpad/client/crashpad_client_posix.cc.orig	2019-10-20 19:10:10 UTC
+--- src/3rdparty/chromium/third_party/crashpad/crashpad/client/crashpad_client_posix.cc.orig	2023-01-14 16:50:29 UTC
 +++ src/3rdparty/chromium/third_party/crashpad/crashpad/client/crashpad_client_posix.cc
-@@ -0,0 +1,38 @@
+@@ -0,0 +1,39 @@
 +// Copyright 2017 The Crashpad Authors. All rights reserved.
 +//
 +// 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
 +//
 +//     http://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.
 +
 +#include "client/crashpad_client.h"
 +
 +#include "base/logging.h"
++#include "base/notreached.h"
 +
 +namespace crashpad {
 +
 +CrashpadClient::CrashpadClient() {}
 +
 +CrashpadClient::~CrashpadClient() {}
 +
 +bool CrashpadClient::StartHandler(
 +    const base::FilePath& handler,
 +    const base::FilePath& database,
 +    const base::FilePath& metrics_dir,
 +    const std::string& url,
 +    const std::map<std::string, std::string>& annotations,
 +    const std::vector<std::string>& arguments,
 +    bool restartable,
 +    bool asynchronous_start) {
 +  NOTREACHED();  // TODO(scottmg): https://crashpad.chromium.org/bug/196
 +  return false;
 +}
 +
 +}  // namespace crashpad
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_util_misc_address__types.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_util_misc_address__types.h
deleted file mode 100644
index c4447b76dc63..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_util_misc_address__types.h
+++ /dev/null
@@ -1,20 +0,0 @@
---- src/3rdparty/chromium/third_party/crashpad/crashpad/util/misc/address_types.h.orig	2019-05-23 12:39:34 UTC
-+++ src/3rdparty/chromium/third_party/crashpad/crashpad/util/misc/address_types.h
-@@ -25,7 +25,7 @@
- #include <mach/mach_types.h>
- #elif defined(OS_WIN)
- #include "util/win/address_types.h"
--#elif defined(OS_LINUX) || defined(OS_ANDROID)
-+#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
- #include "util/linux/address_types.h"
- #elif defined(OS_FUCHSIA)
- #include <zircon/types.h>
-@@ -55,7 +55,7 @@ using VMSize = mach_vm_size_t;
- using VMAddress = WinVMAddress;
- using VMSize = WinVMSize;
- 
--#elif defined(OS_LINUX) || defined(OS_ANDROID)
-+#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
- 
- using VMAddress = LinuxVMAddress;
- using VMSize = LinuxVMSize;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_util_misc_capture__context.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_util_misc_capture__context.h
deleted file mode 100644
index 6523ff8ffa59..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_util_misc_capture__context.h
+++ /dev/null
@@ -1,20 +0,0 @@
---- src/3rdparty/chromium/third_party/crashpad/crashpad/util/misc/capture_context.h.orig	2019-05-23 12:39:34 UTC
-+++ src/3rdparty/chromium/third_party/crashpad/crashpad/util/misc/capture_context.h
-@@ -21,7 +21,7 @@
- #include <mach/mach.h>
- #elif defined(OS_WIN)
- #include <windows.h>
--#elif defined(OS_LINUX) || defined(OS_ANDROID)
-+#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
- #include <ucontext.h>
- #elif defined(OS_FUCHSIA)
- #include <signal.h>
-@@ -35,7 +35,7 @@ using NativeCPUContext = x86_thread_state;
- #endif
- #elif defined(OS_WIN)
- using NativeCPUContext = CONTEXT;
--#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA)
-+#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD)
- using NativeCPUContext = ucontext_t;
- #endif  // OS_MACOSX
- 
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_util_misc_metrics.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_util_misc_metrics.cc
deleted file mode 100644
index 64c7ee37f74f..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_util_misc_metrics.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/3rdparty/chromium/third_party/crashpad/crashpad/util/misc/metrics.cc.orig	2019-05-23 12:39:34 UTC
-+++ src/3rdparty/chromium/third_party/crashpad/crashpad/util/misc/metrics.cc
-@@ -25,7 +25,7 @@
- #define METRICS_OS_NAME "Win"
- #elif defined(OS_ANDROID)
- #define METRICS_OS_NAME "Android"
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
- #define METRICS_OS_NAME "Linux"
- #elif defined(OS_FUCHSIA)
- #define METRICS_OS_NAME "Fuchsia"
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_util_misc_uuid.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_util_misc_uuid.cc
deleted file mode 100644
index 804da69a447f..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_util_misc_uuid.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/3rdparty/chromium/third_party/crashpad/crashpad/util/misc/uuid.cc.orig	2019-05-23 12:39:34 UTC
-+++ src/3rdparty/chromium/third_party/crashpad/crashpad/util/misc/uuid.cc
-@@ -95,7 +95,7 @@ bool UUID::InitializeWithNew() {
-   InitializeFromBytes(uuid);
-   return true;
- #elif defined(OS_WIN) || defined(OS_LINUX) || defined(OS_ANDROID) || \
--    defined(OS_FUCHSIA)
-+    defined(OS_FUCHSIA) || defined(OS_BSD)
-   // Linux, Android, and Fuchsia do not provide a UUID generator in a
-   // widely-available system library. On Linux and Android, uuid_generate()
-   // from libuuid is not available everywhere.
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_util_posix_close__multiple.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_util_posix_close__multiple.cc
index 7e81b1851497..7149a751d03b 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_util_posix_close__multiple.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_util_posix_close__multiple.cc
@@ -1,29 +1,40 @@
---- src/3rdparty/chromium/third_party/crashpad/crashpad/util/posix/close_multiple.cc.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/third_party/crashpad/crashpad/util/posix/close_multiple.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/crashpad/crashpad/util/posix/close_multiple.cc
-@@ -31,7 +31,7 @@
- #include "util/file/directory_reader.h"
- #include "util/misc/implicit_cast.h"
- 
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_BSD)
- #include <sys/sysctl.h>
+@@ -181,11 +181,37 @@ void CloseMultipleNowOrOnExec(int fd, int preserve_fd)
+   }
  #endif
  
-@@ -72,7 +72,7 @@ void CloseNowOrOnExec(int fd, bool ebadf_ok) {
- // This is an advantage over looping over all possible file descriptors, because
- // no attempt needs to be made to close file descriptors that are not open.
- bool CloseMultipleNowOrOnExecUsingFDDir(int min_fd, int preserve_fd) {
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_BSD)
-   static constexpr char kFDDir[] = "/dev/fd";
- #elif defined(OS_LINUX) || defined(OS_ANDROID)
-   static constexpr char kFDDir[] = "/proc/self/fd";
-@@ -146,7 +146,7 @@ void CloseMultipleNowOrOnExec(int fd, int preserve_fd)
-   // while the system is running, but it’s still a better upper bound than the
-   // current RLIMIT_NOFILE value.
++#if defined(OS_BSD)
++  // If preserve_fd is in the space to be freed, copy it down.
++  bool copied = false;
++  if (preserve_fd >= fd) {
++    if (preserve_fd > fd) {
++      int rv = dup2(preserve_fd, fd);
++      if (rv != 0)
++	PLOG(WARNING) << "dup2";
++      copied = true;
++    }
++    fd++;
++  }
++  // Cloexec is only used for MACOS...
++  closefrom(fd);
++  // Put it back.
++  if (copied) {
++    fd--;
++    int rv = dup2(fd, preserve_fd);
++    if (rv != 0)
++      PLOG(WARNING) << "dup2";
++    rv = IGNORE_EINTR(close(fd));
++    if (rv != 0)
++      PLOG(WARNING) << "close";
++  }
++#else
+   for (int entry_fd = fd; entry_fd < max_fd; ++entry_fd) {
+     if (entry_fd != preserve_fd) {
+       CloseNowOrOnExec(entry_fd, true);
+     }
+   }
++#endif
+ }
  
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_BSD)
-   // See 10.11.6 xnu-3248.60.10/bsd/kern/kern_resource.c maxfilesperproc,
-   // referenced by dosetrlimit().
-   int oid[] = {CTL_KERN, KERN_MAXFILESPERPROC};
+ }  // namespace crashpad
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_util_posix_drop__privileges.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_util_posix_drop__privileges.cc
deleted file mode 100644
index ddd8b6883359..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_util_posix_drop__privileges.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/3rdparty/chromium/third_party/crashpad/crashpad/util/posix/drop_privileges.cc.orig	2019-05-23 12:39:34 UTC
-+++ src/3rdparty/chromium/third_party/crashpad/crashpad/util/posix/drop_privileges.cc
-@@ -23,7 +23,7 @@ void DropPrivileges() {
-   gid_t gid = getgid();
-   uid_t uid = getuid();
- 
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_BSD)
-   // Based on the POSIX.1-2008 2013 edition documentation for setreuid() and
-   // setregid(), setreuid() and setregid() alone should be sufficient to drop
-   // privileges. The standard specifies that the saved ID should be set to the
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_util_posix_signals.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_util_posix_signals.cc
index 05ad1143a9fd..37b58b9b6813 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_util_posix_signals.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_util_posix_signals.cc
@@ -1,40 +1,15 @@
---- src/3rdparty/chromium/third_party/crashpad/crashpad/util/posix/signals.cc.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/third_party/crashpad/crashpad/util/posix/signals.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/crashpad/crashpad/util/posix/signals.cc
-@@ -45,10 +45,10 @@ constexpr int kCrashSignals[] = {
- #if defined(SIGEMT)
-     SIGEMT,
- #endif  // defined(SIGEMT)
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
-     SIGXCPU,
-     SIGXFSZ,
--#endif  // defined(OS_LINUX)
-+#endif  // defined(OS_LINUX) || defined(OS_BSD)
- };
- 
- // These are the non-core-generating but terminating signals.
-@@ -85,9 +85,9 @@ constexpr int kTerminateSignals[] = {
-     SIGXCPU,
-     SIGXFSZ,
- #endif  // defined(OS_MACOSX)
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
-     SIGIO,
--#endif  // defined(OS_LINUX)
-+#endif  // defined(OS_LINUX) || defined(OS_BSD)
- };
- 
- bool InstallHandlers(const std::vector<int>& signals,
-@@ -216,8 +216,12 @@ bool Signals::WillSignalReraiseAutonomously(const sigi
+@@ -228,8 +228,12 @@ bool Signals::WillSignalReraiseAutonomously(const sigi
           // remains. See 10.12.3 xnu-3789.41.3/bsd/kern/kern_sig.c
           // psignal_internal().
           (code > 0 &&
 +#if defined(SI_ASYNCIO)
            code != SI_ASYNCIO &&
 +#endif
 +#if defined(SI_MESGQ)
            code != SI_MESGQ &&
 +#endif
            code != SI_QUEUE &&
            code != SI_TIMER &&
            code != SI_USER &&
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_util_posix_symbolic__constants__posix.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_util_posix_symbolic__constants__posix.cc
deleted file mode 100644
index 23fb907585e5..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_crashpad_crashpad_util_posix_symbolic__constants__posix.cc
+++ /dev/null
@@ -1,20 +0,0 @@
---- src/3rdparty/chromium/third_party/crashpad/crashpad/util/posix/symbolic_constants_posix.cc.orig	2019-05-23 12:39:34 UTC
-+++ src/3rdparty/chromium/third_party/crashpad/crashpad/util/posix/symbolic_constants_posix.cc
-@@ -64,7 +64,7 @@ constexpr const char* kSignalNames[] = {
-     "INFO",
-     "USR1",
-     "USR2",
--#elif defined(OS_LINUX) || defined(OS_ANDROID)
-+#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
- #if defined(ARCH_CPU_MIPS_FAMILY)
-     "HUP",
-     "INT",
-@@ -135,7 +135,7 @@ constexpr const char* kSignalNames[] = {
- #endif  // defined(ARCH_CPU_MIPS_FAMILY)
- #endif
- };
--#if defined(OS_LINUX) || defined(OS_ANDROID)
-+#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
- // NSIG is 64 to account for real-time signals.
- static_assert(base::size(kSignalNames) == 32, "kSignalNames length");
- #else
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_leveldatabase_env__chromium.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_leveldatabase_env__chromium.cc
new file mode 100644
index 000000000000..a35e87e3be67
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_leveldatabase_env__chromium.cc
@@ -0,0 +1,14 @@
+--- src/3rdparty/chromium/third_party/leveldatabase/env_chromium.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/third_party/leveldatabase/env_chromium.cc
+@@ -39,7 +39,11 @@
+ #include "third_party/leveldatabase/leveldb_chrome.h"
+ #include "third_party/leveldatabase/leveldb_features.h"
+ #include "third_party/leveldatabase/src/include/leveldb/options.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+ 
+ using base::FilePath;
+ using base::trace_event::MemoryAllocatorDump;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_leveldatabase_port_port__chromium.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_leveldatabase_port_port__chromium.h
deleted file mode 100644
index 3a12dcc106a9..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_leveldatabase_port_port__chromium.h
+++ /dev/null
@@ -1,15 +0,0 @@
---- src/3rdparty/chromium/third_party/leveldatabase/port/port_chromium.h.orig	2019-05-23 12:39:34 UTC
-+++ src/3rdparty/chromium/third_party/leveldatabase/port/port_chromium.h
-@@ -23,8 +23,11 @@
- namespace leveldb {
- namespace port {
- 
--// Chromium only supports little endian.
-+#if ARCH_CPU_LITTLE_ENDIAN
- static const bool kLittleEndian = true;
-+#else
-+static const bool kLittleEndian = false;
-+#endif
- 
- class LOCKABLE Mutex {
-  public:
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_pdfium_core_fxcrt_cfx__datetime.cpp b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_pdfium_core_fxcrt_cfx__datetime.cpp
index 863a0171ff97..c91e7abb3565 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_pdfium_core_fxcrt_cfx__datetime.cpp
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_pdfium_core_fxcrt_cfx__datetime.cpp
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/third_party/pdfium/core/fxcrt/cfx_datetime.cpp.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/third_party/pdfium/core/fxcrt/cfx_datetime.cpp.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/pdfium/core/fxcrt/cfx_datetime.cpp
 @@ -9,7 +9,7 @@
  #include "build/build_config.h"
  #include "core/fxcrt/fx_system.h"
  
--#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_MACOSX) || \
-+#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) || \
-     defined(OS_ASMJS) || defined(__wasm__)
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) || \
+     defined(OS_APPLE) || defined(OS_ASMJS)
  #include <sys/time.h>
  #include <time.h>
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_pdfium_core_fxcrt_fx__system.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_pdfium_core_fxcrt_fx__system.h
deleted file mode 100644
index fa311642d5d6..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_pdfium_core_fxcrt_fx__system.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/3rdparty/chromium/third_party/pdfium/core/fxcrt/fx_system.h.orig	2019-11-27 21:12:25 UTC
-+++ src/3rdparty/chromium/third_party/pdfium/core/fxcrt/fx_system.h
-@@ -26,7 +26,7 @@
- #define _FX_PLATFORM_ _FX_PLATFORM_WINDOWS_
- #elif defined(_WIN64)
- #define _FX_PLATFORM_ _FX_PLATFORM_WINDOWS_
--#elif defined(__linux__)
-+#elif defined(__linux__) || defined(__FreeBSD__)
- #define _FX_PLATFORM_ _FX_PLATFORM_LINUX_
- #elif defined(__APPLE__)
- #define _FX_PLATFORM_ _FX_PLATFORM_APPLE_
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_pdfium_core_fxge_cfx__fontmapper.cpp b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_pdfium_core_fxge_cfx__fontmapper.cpp
new file mode 100644
index 000000000000..79769f6774d3
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_pdfium_core_fxge_cfx__fontmapper.cpp
@@ -0,0 +1,18 @@
+--- src/3rdparty/chromium/third_party/pdfium/core/fxge/cfx_fontmapper.cpp.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/third_party/pdfium/core/fxge/cfx_fontmapper.cpp
+@@ -154,13 +154,13 @@ const AltFontFamily g_AltFontFamilies[] = {
+     {"ForteMT", "Forte"},
+ };
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ASMJS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ASMJS) || defined(OS_BSD)
+ const char kNarrowFamily[] = "LiberationSansNarrow";
+ #elif defined(OS_ANDROID)
+ const char kNarrowFamily[] = "RobotoCondensed";
+ #else
+ const char kNarrowFamily[] = "ArialNarrow";
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ASMJS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ASMJS) || defined(OS_BSD)
+ 
+ ByteString TT_NormalizeName(const char* family) {
+   ByteString norm(family);
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_pdfium_core_fxge_fx__ge__linux.cpp b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_pdfium_core_fxge_fx__ge__linux.cpp
index eb75805bd5a7..d3ab316af998 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_pdfium_core_fxge_fx__ge__linux.cpp
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_pdfium_core_fxge_fx__ge__linux.cpp
@@ -1,14 +1,29 @@
---- src/3rdparty/chromium/third_party/pdfium/core/fxge/fx_ge_linux.cpp.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/third_party/pdfium/core/fxge/fx_ge_linux.cpp.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/pdfium/core/fxge/fx_ge_linux.cpp
-@@ -146,9 +146,8 @@ std::unique_ptr<SystemFontInfoIface> SystemFontInfoIfa
-     const char** pUserPaths) {
-   auto pInfo = pdfium::MakeUnique<CFX_LinuxFontInfo>();
-   if (!pInfo->ParseFontCfg(pUserPaths)) {
--    pInfo->AddPath("/usr/share/fonts");
--    pInfo->AddPath("/usr/share/X11/fonts/Type1");
--    pInfo->AddPath("/usr/share/X11/fonts/TTF");
-+    pInfo->AddPath("%%LOCALBASE%%/share/fonts/Type1");
-+    pInfo->AddPath("%%LOCALBASE%%/share/fonts/TTF");
-     pInfo->AddPath("/usr/local/share/fonts");
+@@ -16,7 +16,7 @@
+ #include "core/fxge/systemfontinfo_iface.h"
+ #include "third_party/base/stl_util.h"
+ 
+-#if !defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ASMJS)
++#if !defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ASMJS) && !defined(OS_BSD)
+ #error "Included on the wrong platform"
+ #endif
+ 
+@@ -165,10 +165,16 @@ class CLinuxPlatform : public CFX_GEModule::PlatformIf
+   std::unique_ptr<SystemFontInfoIface> CreateDefaultSystemFontInfo() override {
+     auto pInfo = std::make_unique<CFX_LinuxFontInfo>();
+     if (!pInfo->ParseFontCfg(CFX_GEModule::Get()->GetUserFontPaths())) {
++#if defined(OS_BSD)
++      pInfo->AddPath("%%LOCALBASE%%/share/fonts");
++      pInfo->AddPath("%%LOCALBASE%%/share/X11/fonts/Type1");
++      pInfo->AddPath("%%LOCALBASE%%/share/X11/fonts/TTF");
++#else
+       pInfo->AddPath("/usr/share/fonts");
+       pInfo->AddPath("/usr/share/X11/fonts/Type1");
+       pInfo->AddPath("/usr/share/X11/fonts/TTF");
+-      pInfo->AddPath("/usr/local/share/fonts");
++      pInfo->AddPath("/usr/local/share/fonts")
++#endif
+     }
+     return pInfo;
    }
-   return std::move(pInfo);
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_pdfium_fxjs_cjs__publicmethods.cpp b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_pdfium_fxjs_cjs__publicmethods.cpp
index 879a0ff5e81e..66e832a6f2d0 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_pdfium_fxjs_cjs__publicmethods.cpp
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_pdfium_fxjs_cjs__publicmethods.cpp
@@ -1,106 +1,106 @@
---- src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_publicmethods.cpp.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_publicmethods.cpp.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/pdfium/fxjs/cjs_publicmethods.cpp
-@@ -72,6 +72,103 @@ const wchar_t* const kFullMonths[] = {L"January", L"Fe
-                                       L"July",    L"August",   L"September",
-                                       L"October", L"November", L"December"};
+@@ -87,6 +87,103 @@ constexpr const wchar_t* kTimeFormats[] = {L"HH:MM", L
+ constexpr const wchar_t* kTimeFormats[] = {L"HH:MM", L"h:MM tt", L"HH:MM:ss",
+                                            L"h:MM:ss tt"};
  
 +#if defined(__FreeBSD__)
 +/*
 + * cvt.c - IEEE floating point formatting routines for FreeBSD
 + * from GNU libc-4.6.27
 + */
 +
 +/*
 + *    ap_ecvt converts to decimal
 + *      the number of digits is specified by ndigit
 + *      decpt is set to the position of the decimal point
 + *      sign is set to 0 for positive, 1 for negative
 + */
 +
 +#define	NDIG	80
 +
 +static char *
 +     ap_cvt(double arg, int ndigits, int *decpt, int *sign, int eflag)
 +{
 +    register int r2;
 +    double fi, fj;
 +    register char *p, *p1;
 +    static char buf[NDIG];
 +
 +    if (ndigits >= NDIG - 1)
 +	ndigits = NDIG - 2;
 +    r2 = 0;
 +    *sign = 0;
 +    p = &buf[0];
 +    if (arg < 0) {
 +	*sign = 1;
 +	arg = -arg;
 +    }
 +    arg = modf(arg, &fi);
 +    p1 = &buf[NDIG];
 +    /*
 +     * Do integer part
 +     */
 +    if (fi != 0) {
 +	p1 = &buf[NDIG];
 +	while (fi != 0) {
 +	    fj = modf(fi / 10, &fi);
 +	    *--p1 = (int) ((fj + .03) * 10) + '0';
 +	    r2++;
 +	}
 +	while (p1 < &buf[NDIG])
 +	    *p++ = *p1++;
 +    }
 +    else if (arg > 0) {
 +	while ((fj = arg * 10) < 1) {
 +	    arg = fj;
 +	    r2--;
 +	}
 +    }
 +    p1 = &buf[ndigits];
 +    if (eflag == 0)
 +	p1 += r2;
 +    *decpt = r2;
 +    if (p1 < &buf[0]) {
 +	buf[0] = '\0';
 +        return (buf);
 +    }
 +    while (p <= p1 && p < &buf[NDIG]) {
 +	arg *= 10;
 +	arg = modf(arg, &fj);
 +	*p++ = (int) fj + '0';
 +    }
 +    if (p1 >= &buf[NDIG]) {
 +	buf[NDIG - 1] = '\0';
 +	return (buf);
 +    }
 +    p = p1;
 +    *p1 += 5;
 +    while (*p1 > '9') {
 +	*p1 = '0';
 +	if (p1 > buf)
 +	    ++ * --p1;
 +	else {
 +	    *p1 = '1';
 +	    (*decpt)++;
 +	    if (eflag == 0) {
 +		if (p > buf)
 +		    *p = '0';
 +		p++;
 +	    }
 +	}
 +    }
 +    *p = '\0';
 +    return (buf);
 +}
 +
 +static char *
 +     fcvt(double arg, int ndigits, int *decpt, int *sign)
 +{
 +     return (ap_cvt(arg, ndigits, decpt, sign, 0));
 +}
 +#endif // defined(__FreeBSD__)
 +
  template <typename T>
  T StrTrim(const T& str) {
    T result = str;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_pdfium_fxjs_fx__date__helpers.cpp b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_pdfium_fxjs_fx__date__helpers.cpp
index d1e1d46ca884..b05e0b720b7f 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_pdfium_fxjs_fx__date__helpers.cpp
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_pdfium_fxjs_fx__date__helpers.cpp
@@ -1,22 +1,22 @@
---- src/3rdparty/chromium/third_party/pdfium/fxjs/fx_date_helpers.cpp.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/third_party/pdfium/fxjs/fx_date_helpers.cpp.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/pdfium/fxjs/fx_date_helpers.cpp
-@@ -34,6 +34,11 @@ double GetLocalTZA() {
+@@ -36,6 +36,11 @@ double GetLocalTZA() {
      return 0;
    time_t t = 0;
    FXSYS_time(&t);
 +#ifdef __FreeBSD__
 +  struct tm lt;
 +  localtime_r(&t, &lt);
 +  return (double)(-(lt.tm_gmtoff * 1000));
 +#else
    FXSYS_localtime(&t);
- #if _FX_PLATFORM_ == _FX_PLATFORM_WINDOWS_
+ #if defined(OS_WIN)
    // In gcc 'timezone' is a global variable declared in time.h. In VC++, that
-@@ -42,6 +47,7 @@ double GetLocalTZA() {
+@@ -44,6 +49,7 @@ double GetLocalTZA() {
    _get_timezone(&timezone);
- #endif  // _FX_PLATFORM_ == _FX_PLATFORM_WINDOWS_
+ #endif
    return (double)(-(timezone * 1000));
 +#endif // __FreeBSD__
  }
  
  int GetDaylightSavingTA(double d) {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_pdfium_third__party_base_allocator_partition__allocator_page__allocator__constants.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_pdfium_third__party_base_allocator_partition__allocator_page__allocator__constants.h
deleted file mode 100644
index 9bac3fa0ee50..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_pdfium_third__party_base_allocator_partition__allocator_page__allocator__constants.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator_constants.h.orig	2019-05-23 14:39:34.000000000 +0200
-+++ src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator_constants.h	2019-10-29 15:25:35.191867000 +0100
-@@ -13,7 +13,7 @@
- namespace base {
- #if defined(OS_WIN)
- static constexpr size_t kPageAllocationGranularityShift = 16;  // 64KB
--#elif defined(_MIPS_ARCH_LOONGSON)
-+#elif defined(_MIPS_ARCH_LOONGSON) || defined(ARCH_CPU_PPC64)
- static constexpr size_t kPageAllocationGranularityShift = 14;  // 16KB
- #else
- static constexpr size_t kPageAllocationGranularityShift = 12;  // 4KB
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_pdfium_third__party_base_allocator_partition__allocator_page__allocator__internals__posix.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_pdfium_third__party_base_allocator_partition__allocator_page__allocator__internals__posix.h
deleted file mode 100644
index 3ff13e700101..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_pdfium_third__party_base_allocator_partition__allocator_page__allocator__internals__posix.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator_internals_posix.h.orig	2020-11-07 01:22:36 UTC
-+++ src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator_internals_posix.h
-@@ -16,7 +16,7 @@
- #if defined(OS_ANDROID)
- #include <sys/prctl.h>
- #endif
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
- #include <sys/resource.h>
- 
- #include <algorithm>
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_pdfium_xfa_fgas_font_cfx__fontsourceenum__file.cpp b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_pdfium_xfa_fgas_font_cfx__fontsourceenum__file.cpp
deleted file mode 100644
index 73d13340e8c8..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_pdfium_xfa_fgas_font_cfx__fontsourceenum__file.cpp
+++ /dev/null
@@ -1,14 +0,0 @@
---- src/3rdparty/chromium/third_party/pdfium/xfa/fgas/font/cfx_fontsourceenum_file.cpp.orig	2019-11-27 21:12:25 UTC
-+++ src/3rdparty/chromium/third_party/pdfium/xfa/fgas/font/cfx_fontsourceenum_file.cpp
-@@ -16,9 +16,8 @@ constexpr char kFolderSeparator = '/';
- 
- constexpr const char* kFontFolders[] = {
- #if _FX_PLATFORM_ == _FX_PLATFORM_LINUX_
--    "/usr/share/fonts",
--    "/usr/share/X11/fonts/Type1",
--    "/usr/share/X11/fonts/TTF",
-+    "%%LOCALBASE%%/share/fonts/Type1",
-+    "%%LOCALBASE%%/share/fonts/TTF",
-     "/usr/local/share/fonts",
- #elif defined(OS_MACOSX)
-     "~/Library/Fonts",
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_include_perfetto_base_build__config.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_include_perfetto_base_build__config.h
index 48d6872a9963..703394ef99ba 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_include_perfetto_base_build__config.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_include_perfetto_base_build__config.h
@@ -1,70 +1,72 @@
---- src/3rdparty/chromium/third_party/perfetto/include/perfetto/base/build_config.h.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/third_party/perfetto/include/perfetto/base/build_config.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/perfetto/include/perfetto/base/build_config.h
-@@ -28,6 +28,7 @@
+@@ -27,6 +27,7 @@
+ #if defined(__ANDROID__)
  #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 1
- #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0
  #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0
 +#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0
  #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0
- #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0
- #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 0
-@@ -37,6 +38,7 @@
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_APPLE() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MAC() 0
+@@ -38,6 +39,7 @@
  #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0
- #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 1
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_APPLE() 1
  #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0
 +#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0
  #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0
  #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0
  #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 0
-@@ -50,15 +52,27 @@
+@@ -54,6 +56,7 @@
+ #elif defined(__linux__)
  #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0
- #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0
  #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 1
 +#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0
  #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_APPLE() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MAC() 0
+@@ -61,9 +64,21 @@
  #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0
  #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 0
  #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_NACL() 0
- #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_IOS() 0
 +#elif defined(__FreeBSD__)
 +#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0
-+#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0
 +#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 1
 +#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 1
 +#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_APPLE() 0
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MAC() 0
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_IOS() 0
 +#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0
 +#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 0
 +#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_NACL() 0
-+#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_IOS() 0
  #elif defined(_WIN32)
  #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0
- #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0
  #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0
 +#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0
  #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 1
- #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0
- #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 0
-@@ -68,6 +82,7 @@
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_APPLE() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MAC() 0
+@@ -74,6 +89,7 @@
+ #elif defined(__EMSCRIPTEN__)
  #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0
- #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0
  #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0
 +#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0
  #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0
- #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 1
- #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 0
-@@ -77,6 +92,7 @@
- #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0
- #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_APPLE() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MAC() 0
+@@ -87,6 +103,7 @@
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MAC() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_IOS() 0
  #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0
 +#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0
  #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0
  #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0
  #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 1
-@@ -86,6 +102,7 @@
+@@ -94,6 +111,7 @@
+ #elif defined(__native_client__)
  #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0
- #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0
  #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0
 +#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0
  #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0
- #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0
- #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_APPLE() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MAC() 0
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_include_perfetto_base_thread__utils.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_include_perfetto_base_thread__utils.h
index f163c3a0dc7b..7baf8737ff87 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_include_perfetto_base_thread__utils.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_include_perfetto_base_thread__utils.h
@@ -1,24 +1,24 @@
---- src/3rdparty/chromium/third_party/perfetto/include/perfetto/base/thread_utils.h.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/third_party/perfetto/include/perfetto/base/thread_utils.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/perfetto/include/perfetto/base/thread_utils.h
-@@ -33,6 +33,9 @@
- #include <sys/types.h>
- #include <unistd.h>
+@@ -35,6 +35,9 @@
+ #else
+ #include <pthread.h>
  #endif
 +#if PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
 +#include <pthread_np.h>
 +#endif
  
  namespace perfetto {
  namespace base {
-@@ -41,6 +44,11 @@ namespace base {
+@@ -43,6 +46,11 @@ inline PlatformThreadId GetThreadId() {
  using PlatformThreadId = pid_t;
  inline PlatformThreadId GetThreadId() {
    return gettid();
 +}
 +#elif PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
 +using PlatformThreadId = pid_t;
 +inline PlatformThreadId GetThreadId() {
 +  return pthread_getthreadid_np();
  }
  #elif PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX)
  using PlatformThreadId = pid_t;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_include_perfetto_base_time.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_include_perfetto_base_time.h
index 85a41bc4a2d8..fbef11fa0212 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_include_perfetto_base_time.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_include_perfetto_base_time.h
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/third_party/perfetto/include/perfetto/base/time.h.orig	2020-03-16 14:04:24 UTC
+--- src/3rdparty/chromium/third_party/perfetto/include/perfetto/base/time.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/perfetto/include/perfetto/base/time.h
-@@ -123,6 +123,9 @@ inline TimeNanos GetTimeInternalNs(clockid_t clk_id) {
+@@ -141,6 +141,9 @@ inline TimeNanos GetBootTimeNs() {
  // Return ns from boot. Conversely to GetWallTimeNs, this clock counts also time
  // during suspend (when supported).
  inline TimeNanos GetBootTimeNs() {
 +#if PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
 +  return GetTimeInternalNs(kWallTimeClockSource);
 +#else
    // Determine if CLOCK_BOOTTIME is available on the first call.
    static const clockid_t kBootTimeClockSource = [] {
      struct timespec ts = {};
-@@ -130,6 +133,7 @@ inline TimeNanos GetBootTimeNs() {
+@@ -148,6 +151,7 @@ inline TimeNanos GetBootTimeNs() {
      return res == 0 ? CLOCK_BOOTTIME : kWallTimeClockSource;
    }();
    return GetTimeInternalNs(kBootTimeClockSource);
 +#endif
  }
  
  inline TimeNanos GetWallTimeNs() {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_include_perfetto_ext_base_circular__queue.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_include_perfetto_ext_base_circular__queue.h
deleted file mode 100644
index 140d969a385f..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_include_perfetto_ext_base_circular__queue.h
+++ /dev/null
@@ -1,22 +0,0 @@
-commit c81e804f8d37823aac9cf9d6d4ca92363284bf3b
-Author: Lalit Maganti <lalitm@google.com>
-Date:   Tue Apr 7 21:13:02 2020 +0100
-
-    base: attempt to fix compile on vs2019
-    
-    Bug: 153189621
-    Change-Id: Ie93cd0d6e4e128c5402539dac15507d4aed22edd
-
---- src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/circular_queue.h.orig	2020-11-07 01:22:36 UTC
-+++ src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/circular_queue.h
-@@ -52,8 +52,8 @@ class CircularQueue {
-    public:
-     using difference_type = ptrdiff_t;
-     using value_type = T;
--    using pointer = const T*;
--    using reference = const T&;
-+    using pointer = T*;
-+    using reference = T&;
-     using iterator_category = std::random_access_iterator_tag;
- 
-     Iterator(CircularQueue* queue, uint64_t pos, uint32_t generation)
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_include_perfetto_ext_base_thread__utils.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_include_perfetto_ext_base_thread__utils.h
new file mode 100644
index 000000000000..f62746d91cdc
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_include_perfetto_ext_base_thread__utils.h
@@ -0,0 +1,12 @@
+--- src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/thread_utils.h.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/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/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_src_base_subprocess.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_src_base_subprocess.cc
index d0e657e05226..92e8a5ae5553 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_src_base_subprocess.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_src_base_subprocess.cc
@@ -1,24 +1,24 @@
---- src/3rdparty/chromium/third_party/perfetto/src/base/subprocess.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/third_party/perfetto/src/base/subprocess.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/perfetto/src/base/subprocess.cc
-@@ -31,8 +31,8 @@
+@@ -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
  
-@@ -56,8 +56,8 @@ struct ChildProcessArgs {
+@@ -60,8 +60,8 @@ void __attribute__((noreturn)) ChildProcess(ChildProce
  // 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/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_src_base_thread__task__runner.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_src_base_thread__task__runner.cc
index 2e8c2878c832..322e6aeb3be9 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_src_base_thread__task__runner.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_src_base_thread__task__runner.cc
@@ -1,20 +1,11 @@
---- src/3rdparty/chromium/third_party/perfetto/src/base/thread_task_runner.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/third_party/perfetto/src/base/thread_task_runner.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/perfetto/src/base/thread_task_runner.cc
-@@ -27,7 +27,7 @@
- #include "perfetto/base/logging.h"
+@@ -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
-@@ -84,6 +84,8 @@ void ThreadTaskRunner::RunTaskThread(
-   if (!name_.empty()) {
- #if PERFETTO_BUILDFLAG(PERFETTO_OS_MACOSX)
-     pthread_setname_np(name_.c_str());
-+#elif PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
-+    pthread_set_name_np(pthread_self(), name_.c_str());
- #elif PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
-     PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
-     prctl(PR_SET_NAME, name_.c_str());
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_src_base_unix__socket.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_src_base_unix__socket.cc
index 89e7e36412f2..ff47b7837e84 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_src_base_unix__socket.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_src_base_unix__socket.cc
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/third_party/perfetto/src/base/unix_socket.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/third_party/perfetto/src/base/unix_socket.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/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_MACOSX)
-+#if PERFETTO_BUILDFLAG(PERFETTO_OS_MACOSX) || PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+-#if PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE)
++#if PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE) || PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
  #include <sys/ucred.h>
  #endif
  
-@@ -601,7 +601,7 @@ void UnixSocket::ReadPeerCredentials() {
+@@ -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/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_src_tracing_core_tracing__service__impl.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_src_tracing_core_tracing__service__impl.cc
index 1221b9cd0795..ac79705fbe0d 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_src_tracing_core_tracing__service__impl.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_src_tracing_core_tracing__service__impl.cc
@@ -1,10 +1,14 @@
---- src/3rdparty/chromium/third_party/perfetto/src/tracing/core/tracing_service_impl.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/third_party/perfetto/src/tracing/core/tracing_service_impl.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/perfetto/src/tracing/core/tracing_service_impl.cc
-@@ -2326,6 +2326,7 @@ void TracingServiceImpl::SnapshotClocks(std::vector<Tr
+@@ -2569,8 +2569,9 @@ bool TracingServiceImpl::SnapshotClocks(
  
- #if !PERFETTO_BUILDFLAG(PERFETTO_OS_MACOSX) && \
-     !PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) &&    \
+   TracingSession::ClockSnapshotData new_snapshot_data;
+ 
+-#if !PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE) && \
+-    !PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) &&   \
++#if !PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE) &&   \
++    !PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) &&     \
 +    !PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD) && \
      !PERFETTO_BUILDFLAG(PERFETTO_OS_NACL)
    struct {
      clockid_t id;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_skia_src_core_SkCpu.cpp b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_skia_src_core_SkCpu.cpp
index 0846610268fb..107a50ba8f74 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_skia_src_core_SkCpu.cpp
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_skia_src_core_SkCpu.cpp
@@ -1,39 +1,26 @@
---- src/3rdparty/chromium/third_party/skia/src/core/SkCpu.cpp	2019-10-21 10:14:54 UTC
+--- src/3rdparty/chromium/third_party/skia/src/core/SkCpu.cpp.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/skia/src/core/SkCpu.cpp
-@@ -70,6 +70,23 @@
+@@ -72,6 +72,23 @@
          return features;
      }
  
 +#elif defined(SK_CPU_ARM64) && defined(__FreeBSD__)
 +    #include <machine/armreg.h>
 +    #ifndef ID_AA64ISAR0_CRC32_VAL
 +    #define ID_AA64ISAR0_CRC32_VAL ID_AA64ISAR0_CRC32
 +    #endif
 +
 +    static uint32_t read_cpu_features() {
-+        uint32_t features = 0;
-+        uint64_t id_aa64isar0;
++      uint32_t features = 0;
++      uint64_t id_aa64isar0;
 +
-+        id_aa64isar0 = READ_SPECIALREG(id_aa64isar0_el1);
-+        if (ID_AA64ISAR0_CRC32_VAL(id_aa64isar0) == ID_AA64ISAR0_CRC32_BASE) {
-+            features |= SkCpu::CRC32;
-+        }
-+        return features;
++      id_aa64isar0 = READ_SPECIALREG(id_aa64isar0_el1);
++      if (ID_AA64ISAR0_CRC32_VAL(id_aa64isar0) == ID_AA64ISAR0_CRC32_BASE) {
++        features |= SkCpu::CRC32;
++      }
++      return features;
 +    }
 +
  #elif defined(SK_CPU_ARM64) && __has_include(<sys/auxv.h>)
      #include <sys/auxv.h>
  
-@@ -78,7 +95,12 @@
-                        kHWCAP_ASIMDHP = (1<<10);
- 
-         uint32_t features = 0;
-+#if defined(__FreeBSD__)
-+        uint32_t hwcaps = 0;
-+        elf_aux_info(AT_HWCAP, &hwcaps, sizeof(hwcaps));
-+#else
-         uint32_t hwcaps = getauxval(AT_HWCAP);
-+#endif
-         if (hwcaps & kHWCAP_CRC32  ) { features |= SkCpu::CRC32; }
-         if (hwcaps & kHWCAP_ASIMDHP) { features |= SkCpu::ASIMDHP; }
-         return features;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_skia_src_images_SkJpegEncoder.cpp b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_skia_src_images_SkJpegEncoder.cpp
index c96249972698..03c9e124b6a4 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_skia_src_images_SkJpegEncoder.cpp
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_skia_src_images_SkJpegEncoder.cpp
@@ -1,41 +1,41 @@
---- src/3rdparty/chromium/third_party/skia/src/images/SkJpegEncoder.cpp.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/third_party/skia/src/images/SkJpegEncoder.cpp.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/skia/src/images/SkJpegEncoder.cpp
-@@ -77,9 +77,14 @@ bool SkJpegEncoderMgr::setParams(const SkImageInfo& sr
-         return transform_scanline_to_premul_legacy;
+@@ -76,9 +76,14 @@ bool SkJpegEncoderMgr::setParams(const SkImageInfo& sr
+         return (transform_scanline_proc) nullptr;
      };
  
 +#ifdef JCS_EXTENSIONS
      J_COLOR_SPACE jpegColorType = JCS_EXT_RGBA;
 +#else
 +    J_COLOR_SPACE jpegColorType = JCS_RGB;
 +#endif
      int numComponents = 0;
      switch (srcInfo.colorType()) {
 +#ifdef JCS_EXTENSIONS
          case kRGBA_8888_SkColorType:
              fProc = chooseProc8888();
              jpegColorType = JCS_EXT_RGBA;
-@@ -90,6 +95,7 @@ bool SkJpegEncoderMgr::setParams(const SkImageInfo& sr
+@@ -89,6 +94,7 @@ bool SkJpegEncoderMgr::setParams(const SkImageInfo& sr
              jpegColorType = JCS_EXT_BGRA;
              numComponents = 4;
              break;
 +#endif
          case kRGB_565_SkColorType:
              fProc = transform_scanline_565;
              jpegColorType = JCS_RGB;
-@@ -109,6 +115,7 @@ bool SkJpegEncoderMgr::setParams(const SkImageInfo& sr
+@@ -108,6 +114,7 @@ bool SkJpegEncoderMgr::setParams(const SkImageInfo& sr
              jpegColorType = JCS_GRAYSCALE;
              numComponents = 1;
              break;
 +#ifdef JCS_EXTENSIONS
          case kRGBA_F16_SkColorType:
-             if (!srcInfo.colorSpace()) {
-                 return false;
-@@ -124,6 +131,7 @@ bool SkJpegEncoderMgr::setParams(const SkImageInfo& sr
+             if (kUnpremul_SkAlphaType == srcInfo.alphaType() &&
+                     options.fAlphaOption == SkJpegEncoder::AlphaOption::kBlendOnBlack) {
+@@ -118,6 +125,7 @@ bool SkJpegEncoderMgr::setParams(const SkImageInfo& sr
              jpegColorType = JCS_EXT_RGBA;
              numComponents = 4;
              break;
 +#endif
          default:
              return false;
      }
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_skia_src_opts_SkBlitRow__opts.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_skia_src_opts_SkBlitRow__opts.h
deleted file mode 100644
index ba2b67475c31..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_skia_src_opts_SkBlitRow__opts.h
+++ /dev/null
@@ -1,13 +0,0 @@
---- src/3rdparty/chromium/third_party/skia/src/opts/SkBlitRow_opts.h.orig	2019-05-23 12:39:34 UTC
-+++ src/3rdparty/chromium/third_party/skia/src/opts/SkBlitRow_opts.h
-@@ -237,8 +237,8 @@ void blit_row_s32a_opaque(SkPMColor* dst, const SkPMCo
-         // with chromium:611002 we need to keep it until we figure out where
-         // the non-premultiplied src values (like 0x00FFFFFF) are coming from.
-         // TODO(mtklein): sort this out and assert *src is premul here.
--        if (*src & 0xFF000000) {
--            *dst = (*src >= 0xFF000000) ? *src : SkPMSrcOver(*src, *dst);
-+        if (*src & (0xFF << SK_A32_SHIFT)) {
-+            *dst = ((*src << (24 - SK_A32_SHIFT)) >= 0xFF000000) ? *src : SkPMSrcOver(*src, *dst);
-         }
-         src++;
-         dst++;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_skia_src_ports_SkOSFile__stdio.cpp b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_skia_src_ports_SkOSFile__stdio.cpp
index 328dc8271a20..ffc97546101a 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_skia_src_ports_SkOSFile__stdio.cpp
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_skia_src_ports_SkOSFile__stdio.cpp
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/third_party/skia/src/ports/SkOSFile_stdio.cpp.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/third_party/skia/src/ports/SkOSFile_stdio.cpp.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/skia/src/ports/SkOSFile_stdio.cpp
-@@ -129,7 +129,7 @@ void sk_fflush(FILE* f) {
+@@ -132,7 +132,7 @@ void sk_fsync(FILE* f) {
  
  void sk_fsync(FILE* f) {
  #if !defined(_WIN32) && !defined(SK_BUILD_FOR_ANDROID) && !defined(__UCLIBC__) \
 -        && !defined(_NEWLIB_VERSION)
 +        && !defined(_NEWLIB_VERSION) && !defined(__FreeBSD__)
      int fd = fileno(f);
      fsync(fd);
  #endif
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_skia_src_sksl_SkSLString.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_skia_src_sksl_SkSLString.h
index f69081c0adf3..85143652fce1 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_skia_src_sksl_SkSLString.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_skia_src_sksl_SkSLString.h
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/third_party/skia/src/sksl/SkSLString.h.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/third_party/skia/src/sksl/SkSLString.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/skia/src/sksl/SkSLString.h
-@@ -22,6 +22,8 @@
-     #include "SkString.h"
+@@ -17,6 +17,8 @@
+ #include "include/core/SkString.h"
  #endif
  
 +#include <stdarg.h>
 +
  namespace SkSL {
  
  // Represents a (not necessarily null-terminated) slice of a string.
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_skia_src_utils_SkJSON.cpp b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_skia_src_utils_SkJSON.cpp
deleted file mode 100644
index e0d39a87e955..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_skia_src_utils_SkJSON.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
---- src/3rdparty/chromium/third_party/skia/src/utils/SkJSON.cpp.orig	2019-05-23 12:39:34 UTC
-+++ src/3rdparty/chromium/third_party/skia/src/utils/SkJSON.cpp
-@@ -34,6 +34,10 @@ void Value::init_tagged(Tag t) {
- 
- // Pointer values store a type (in the upper kTagBits bits) and a pointer.
- void Value::init_tagged_pointer(Tag t, void* p) {
-+#if !defined(SK_CPU_LENDIAN)
-+    // Check that kRecAlign is large enough to leave room for the tag
-+    static_assert(sizeof(Value) > sizeof(uintptr_t) || !(kRecAlign & Value::kTagMask), "kRecAlign is not a multiple of kTagMask+1");
-+#endif
-     *this->cast<uintptr_t>() = reinterpret_cast<uintptr_t>(p);
- 
-     if (sizeof(Value) == sizeof(uintptr_t)) {
-@@ -169,7 +173,7 @@ class FastString final : public Value { (private)
- #if defined(SK_CPU_LENDIAN)
-         *s64 &= 0x00ffffffffffffffULL >> ((kMaxInlineStringSize - size) * 8);
- #else
--        static_assert(false, "Big-endian builds are not supported at this time.");
-+        *s64 &= 0xffffffffffffff00ULL << ((kMaxInlineStringSize - size) * 8);
- #endif
-     }
- };
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_skia_src_utils_SkJSON.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_skia_src_utils_SkJSON.h
deleted file mode 100644
index d62d0ba00970..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_skia_src_utils_SkJSON.h
+++ /dev/null
@@ -1,51 +0,0 @@
---- src/3rdparty/chromium/third_party/skia/src/utils/SkJSON.h.orig	2019-05-23 12:39:34 UTC
-+++ src/3rdparty/chromium/third_party/skia/src/utils/SkJSON.h
-@@ -120,6 +120,7 @@ class alignas(8) Value { (protected)
-          -- highest 3 bits reserved for type storage
- 
-      */
-+#if defined(SK_CPU_LENDIAN)
-     enum class Tag : uint8_t {
-         // We picked kShortString == 0 so that tag 0x00 and stored max_size-size (7-7=0)
-         // conveniently overlap the '\0' terminator, allowing us to store a 7 character
-@@ -134,6 +135,22 @@ class alignas(8) Value { (protected)
-         kObject                       = 0b11100000,  // ptr to external storage
-     };
-     static constexpr uint8_t kTagMask = 0b11100000;
-+#else
-+    enum class Tag : uint8_t {
-+        // We picked kShortString == 0 so that tag 0x00 and stored max_size-size (7-7=0)
-+        // conveniently overlap the '\0' terminator, allowing us to store a 7 character
-+        // C string inline.
-+        kShortString                  = 0b00000000,  // inline payload
-+        kNull                         = 0b00000001,  // no payload
-+        kBool                         = 0b00000010,  // inline payload
-+        kInt                          = 0b00000011,  // inline payload
-+        kFloat                        = 0b00000100,  // inline payload
-+        kString                       = 0b00000101,  // ptr to external storage
-+        kArray                        = 0b00000110,  // ptr to external storage
-+        kObject                       = 0b00000111,  // ptr to external storage
-+    };
-+    static constexpr uint8_t kTagMask = 0b00000111;
-+#endif
- 
-     void init_tagged(Tag);
-     void init_tagged_pointer(Tag, void*);
-@@ -192,14 +209,14 @@ class alignas(8) Value { (protected)
- 
-     uint8_t fData8[kValueSize];
- 
--#if defined(SK_CPU_LENDIAN)
-     static constexpr size_t kTagOffset = kValueSize - 1;
- 
-+#if defined(SK_CPU_LENDIAN)
-     static constexpr uintptr_t kTagPointerMask =
-             ~(static_cast<uintptr_t>(kTagMask) << ((sizeof(uintptr_t) - 1) * 8));
- #else
--    // The current value layout assumes LE and will take some tweaking for BE.
--    static_assert(false, "Big-endian builds are not supported at this time.");
-+    static constexpr uintptr_t kTagPointerMask =
-+            ~static_cast<uintptr_t>(kTagMask);
- #endif
- };
- 
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_skia_third__party_vulkanmemoryallocator_include_vk__mem__alloc.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_skia_third__party_vulkanmemoryallocator_include_vk__mem__alloc.h
deleted file mode 100644
index 5dc4b8054d42..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_skia_third__party_vulkanmemoryallocator_include_vk__mem__alloc.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/3rdparty/chromium/third_party/skia/third_party/vulkanmemoryallocator/include/vk_mem_alloc.h.orig	2018-11-13 18:25:11 UTC
-+++ src/3rdparty/chromium/third_party/skia/third_party/vulkanmemoryallocator/include/vk_mem_alloc.h
-@@ -2232,7 +2232,7 @@ remove them if not needed.
- #include <mutex> // for std::mutex
- #include <atomic> // for std::atomic
- 
--#if !defined(_WIN32) && !defined(__APPLE__)
-+#if !defined(_WIN32) && !defined(__APPLE__) && !defined(__FreeBSD__)
-     #include <malloc.h> // for aligned_alloc()
- #endif
- 
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_sqlite_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_sqlite_BUILD.gn
index db3b7f6f4083..d1cdc750861e 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_sqlite_BUILD.gn
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_sqlite_BUILD.gn
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/third_party/sqlite/BUILD.gn.orig	2019-01-16 10:59:47 UTC
+--- src/3rdparty/chromium/third_party/sqlite/BUILD.gn.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/sqlite/BUILD.gn
-@@ -188,7 +188,7 @@ config("sqlite_warnings") {
+@@ -138,7 +138,7 @@ config("sqlite_warnings") {
        ]
      }
    }
--  if (is_linux) {
-+  if (is_linux && !is_bsd) {
+-  if (is_linux || is_chromeos) {
++  if ((is_linux || is_chromeos) && !is_bsd) {
      cflags += [
        # SQLite doesn't believe in compiler warnings, preferring testing.
        # http://www.sqlite.org/faq.html#q17
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_usrsctp_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_usrsctp_BUILD.gn
index 23deb7d74c1c..ac097e43d145 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_usrsctp_BUILD.gn
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_usrsctp_BUILD.gn
@@ -1,20 +1,22 @@
---- src/3rdparty/chromium/third_party/usrsctp/BUILD.gn.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/third_party/usrsctp/BUILD.gn.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/usrsctp/BUILD.gn
-@@ -116,11 +116,16 @@ static_library("usrsctp") {
+@@ -127,7 +127,7 @@ static_library("usrsctp") {
      "-UINET6",
    ]
  
--  if (is_linux || is_android) {
-+  if ((is_linux && !is_bsd) || is_android ) {
+-  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",
-+    ]
-+    cflags += [ "-U__FreeBSD__" ]
-   } else if (is_mac || is_ios) {
-     defines += [
-       "HAVE_SA_LEN",
+     ]
+   }
+ 
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_BUILD.gn
index 942b1d1725e7..f4257c82e19c 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_BUILD.gn
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_BUILD.gn
@@ -1,12 +1,12 @@
---- src/3rdparty/chromium/third_party/webrtc/BUILD.gn.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/third_party/webrtc/BUILD.gn.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/webrtc/BUILD.gn
-@@ -132,6 +132,9 @@ config("common_inherited_config") {
-   if (is_linux) {
+@@ -176,6 +176,9 @@ config("common_inherited_config") {
+   if (is_linux || is_chromeos) {
      defines += [ "WEBRTC_LINUX" ]
    }
 +  if (is_bsd) {
 +    defines += [ "WEBRTC_BSD" ]
 +  }
    if (is_mac) {
      defines += [ "WEBRTC_MAC" ]
    }
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_modules_audio__device_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_modules_audio__device_BUILD.gn
index 47c51eb3625c..d4de2fa2cb25 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_modules_audio__device_BUILD.gn
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_modules_audio__device_BUILD.gn
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/third_party/webrtc/modules/audio_device/BUILD.gn.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/third_party/webrtc/modules/audio_device/BUILD.gn.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/webrtc/modules/audio_device/BUILD.gn
-@@ -331,7 +331,7 @@ rtc_source_set("audio_device_impl") {
+@@ -263,7 +263,7 @@ rtc_library("audio_device_impl") {
      if (rtc_use_dummy_audio_file_devices) {
        defines += [ "WEBRTC_DUMMY_FILE_DEVICES" ]
      } else {
--      if (is_linux) {
-+      if (is_linux && !is_bsd) {
+-      if (is_linux || is_chromeos) {
++      if ((is_linux || is_chromeos) && !is_bsd) {
          sources += [
            "linux/alsasymboltable_linux.cc",
            "linux/alsasymboltable_linux.h",
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_modules_desktop__capture_differ__block.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_modules_desktop__capture_differ__block.cc
deleted file mode 100644
index 1a2bd61b2960..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_modules_desktop__capture_differ__block.cc
+++ /dev/null
@@ -1,26 +0,0 @@
---- src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/differ_block.cc.orig	2019-05-23 12:39:34 UTC
-+++ src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/differ_block.cc
-@@ -30,11 +30,7 @@ bool VectorDifference(const uint8_t* image1, const uin
-   static bool (*diff_proc)(const uint8_t*, const uint8_t*) = nullptr;
- 
-   if (!diff_proc) {
--#if defined(WEBRTC_ARCH_ARM_FAMILY) || defined(WEBRTC_ARCH_MIPS_FAMILY)
--    // For ARM and MIPS processors, always use C version.
--    // TODO(hclam): Implement a NEON version.
--    diff_proc = &VectorDifference_C;
--#else
-+#if defined(WEBRTC_ARCH_X86_FAMILY)
-     bool have_sse2 = WebRtc_GetCPUInfo(kSSE2) != 0;
-     // For x86 processors, check if SSE2 is supported.
-     if (have_sse2 && kBlockSize == 32) {
-@@ -44,6 +40,10 @@ bool VectorDifference(const uint8_t* image1, const uin
-     } else {
-       diff_proc = &VectorDifference_C;
-     }
-+#else
-+    // For other processors, always use C version.
-+    // TODO(hclam): Implement a NEON version.
-+    diff_proc = &VectorDifference_C;
- #endif
-   }
- 
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_modules_rtp__rtcp_source_forward__error__correction.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_modules_rtp__rtcp_source_forward__error__correction.cc
index 72f8ab55152d..6e4dc46cc6d3 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_modules_rtp__rtcp_source_forward__error__correction.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_modules_rtp__rtcp_source_forward__error__correction.cc
@@ -1,10 +1,10 @@
---- src/3rdparty/chromium/third_party/webrtc/modules/rtp_rtcp/source/forward_error_correction.cc.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/third_party/webrtc/modules/rtp_rtcp/source/forward_error_correction.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/webrtc/modules/rtp_rtcp/source/forward_error_correction.cc
-@@ -12,6 +12,7 @@
- 
+@@ -13,6 +13,7 @@
  #include <string.h>
+ 
  #include <algorithm>
 +#include <cstdlib>
  #include <utility>
  
- #include "modules/include/module_common_types_public.h"
+ #include "absl/algorithm/container.h"
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_rtc__base_ifaddrs__converter.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_rtc__base_ifaddrs__converter.h
index 8cc440fd9793..ba0788d7194d 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_rtc__base_ifaddrs__converter.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_rtc__base_ifaddrs__converter.h
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/third_party/webrtc/rtc_base/ifaddrs_converter.h.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/third_party/webrtc/rtc_base/ifaddrs_converter.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/webrtc/rtc_base/ifaddrs_converter.h
 @@ -14,6 +14,8 @@
  #if defined(WEBRTC_ANDROID)
- #include "rtc_base/ifaddrs-android.h"
+ #include "rtc_base/ifaddrs_android.h"
  #else
 +#include <sys/types.h>
 +#include <sys/socket.h>
  #include <ifaddrs.h>
  #endif  // WEBRTC_ANDROID
  
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_rtc__base_network.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_rtc__base_network.cc
index 710a44e24eb0..16a1fdfdaba8 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_rtc__base_network.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_rtc__base_network.cc
@@ -1,15 +1,15 @@
---- src/3rdparty/chromium/third_party/webrtc/rtc_base/network.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/third_party/webrtc/rtc_base/network.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/webrtc/rtc_base/network.cc
-@@ -222,7 +222,12 @@ AdapterType GetAdapterTypeFromName(const char* network
+@@ -244,7 +244,12 @@ AdapterType GetAdapterTypeFromName(const char* network
    }
  #endif
  
 +#if defined(WEBRTC_BSD)
 +  // Treat all other network interface names as ethernet on BSD
 +  return ADAPTER_TYPE_ETHERNET;
 +#else
    return ADAPTER_TYPE_UNKNOWN;
 +#endif
  }
  
  NetworkManager::NetworkManager() {}
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_rtc__base_network.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_rtc__base_network.h
index ae2146bf60ed..47658122a462 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_rtc__base_network.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_rtc__base_network.h
@@ -1,13 +1,13 @@
---- src/3rdparty/chromium/third_party/webrtc/rtc_base/network.h.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/third_party/webrtc/rtc_base/network.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/webrtc/rtc_base/network.h
-@@ -24,6 +24,10 @@
- #include "rtc_base/networkmonitor.h"
- #include "rtc_base/sigslot.h"
+@@ -29,6 +29,10 @@
+ #include "rtc_base/third_party/sigslot/sigslot.h"
+ #include "rtc_base/thread_annotations.h"
  
 +#if defined(WEBRTC_BSD)
 +#include <sys/types.h>
 +#endif
 +
  #if defined(WEBRTC_POSIX)
  struct ifaddrs;
  #endif  // defined(WEBRTC_POSIX)
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_rtc__base_physical__socket__server.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_rtc__base_physical__socket__server.cc
index 563832a376a8..d2bf14040969 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_rtc__base_physical__socket__server.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_rtc__base_physical__socket__server.cc
@@ -1,47 +1,47 @@
---- src/3rdparty/chromium/third_party/webrtc/rtc_base/physical_socket_server.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/third_party/webrtc/rtc_base/physical_socket_server.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/webrtc/rtc_base/physical_socket_server.cc
-@@ -51,7 +51,7 @@
+@@ -50,7 +50,7 @@
  #include "rtc_base/null_socket_server.h"
  #include "rtc_base/time_utils.h"
  
 -#if defined(WEBRTC_LINUX)
 +#if defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD)
  #include <linux/sockios.h>
  #endif
  
-@@ -70,7 +70,7 @@ typedef void* SockOptArg;
+@@ -69,7 +69,7 @@ typedef void* SockOptArg;
  
  #endif  // WEBRTC_POSIX
  
 -#if defined(WEBRTC_POSIX) && !defined(WEBRTC_MAC) && !defined(__native_client__)
 +#if defined(WEBRTC_POSIX) && !defined(WEBRTC_MAC) && !defined(WEBRTC_BSD) && !defined(__native_client__)
  
  int64_t GetSocketRecvTimestamp(int socket) {
    struct timeval tv_ioctl;
-@@ -292,7 +292,7 @@ int PhysicalSocket::GetOption(Option opt, int* value) 
+@@ -305,7 +305,7 @@ int PhysicalSocket::GetOption(Option opt, int* value) 
      return -1;
    }
    if (opt == OPT_DONTFRAGMENT) {
 -#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID)
 +#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) && !defined(WEBRTC_BSD)
      *value = (*value != IP_PMTUDISC_DONT) ? 1 : 0;
  #endif
    } else if (opt == OPT_DSCP) {
-@@ -310,7 +310,7 @@ int PhysicalSocket::SetOption(Option opt, int value) {
+@@ -323,7 +323,7 @@ int PhysicalSocket::SetOption(Option opt, int value) {
    if (TranslateOption(opt, &slevel, &sopt) == -1)
      return -1;
    if (opt == OPT_DONTFRAGMENT) {
 -#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID)
 +#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) && !defined(WEBRTC_BSD)
      value = (value) ? IP_PMTUDISC_DO : IP_PMTUDISC_DONT;
  #endif
    } else if (opt == OPT_DSCP) {
-@@ -551,7 +551,7 @@ int PhysicalSocket::TranslateOption(Option opt, int* s
+@@ -564,7 +564,7 @@ int PhysicalSocket::TranslateOption(Option opt, int* s
        *slevel = IPPROTO_IP;
        *sopt = IP_DONTFRAGMENT;
        break;
 -#elif defined(WEBRTC_MAC) || defined(BSD) || defined(__native_client__)
 +#elif defined(WEBRTC_MAC) || defined(WEBRTC_BSD) || defined(__native_client__)
        RTC_LOG(LS_WARNING) << "Socket::OPT_DONTFRAGMENT not supported.";
        return -1;
  #elif defined(WEBRTC_POSIX)
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_rtc__base_platform__thread__types.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_rtc__base_platform__thread__types.cc
index 1c2ae9bd3df0..6bb343a4baa0 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_rtc__base_platform__thread__types.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_rtc__base_platform__thread__types.cc
@@ -1,39 +1,39 @@
---- src/3rdparty/chromium/third_party/webrtc/rtc_base/platform_thread_types.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/third_party/webrtc/rtc_base/platform_thread_types.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/webrtc/rtc_base/platform_thread_types.cc
 @@ -11,7 +11,11 @@
  #include "rtc_base/platform_thread_types.h"
  
  #if defined(WEBRTC_LINUX)
 +#if !defined(__FreeBSD__)
  #include <sys/prctl.h>
 +#else
 +#include <pthread_np.h>
 +#endif
  #include <sys/syscall.h>
  #endif
  
-@@ -27,6 +31,8 @@ PlatformThreadId CurrentThreadId() {
+@@ -37,6 +41,8 @@ PlatformThreadId CurrentThreadId() {
    return gettid();
  #elif defined(WEBRTC_FUCHSIA)
    return zx_thread_self();
 +#elif defined(__FreeBSD__)
 +  return pthread_getthreadid_np();
  #elif defined(WEBRTC_LINUX)
    return syscall(__NR_gettid);
  #elif defined(__EMSCRIPTEN__)
-@@ -57,6 +63,7 @@ bool IsThreadRefEqual(const PlatformThreadRef& a, cons
+@@ -67,6 +73,7 @@ void SetCurrentThreadName(const char* name) {
  }
  
  void SetCurrentThreadName(const char* name) {
 +#if !defined(__FreeBSD__)
  #if defined(WEBRTC_WIN)
-   struct {
-     DWORD dwType;
-@@ -74,6 +81,7 @@ void SetCurrentThreadName(const char* name) {
+   // The SetThreadDescription API works even if no debugger is attached.
+   // The names set with this API also show up in ETW traces. Very handy.
+@@ -109,6 +116,7 @@ void SetCurrentThreadName(const char* name) {
    prctl(PR_SET_NAME, reinterpret_cast<unsigned long>(name));  // NOLINT
  #elif defined(WEBRTC_MAC) || defined(WEBRTC_IOS)
    pthread_setname_np(name);
 +#endif
  #endif
  }
  
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_system__wrappers_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_system__wrappers_BUILD.gn
index 8114100fc7be..89d3cc194816 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_system__wrappers_BUILD.gn
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_system__wrappers_BUILD.gn
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn
-@@ -75,8 +75,6 @@ rtc_static_library("system_wrappers") {
+@@ -62,8 +62,6 @@ rtc_library("system_wrappers") {
      if (!build_with_chromium) {
-       deps += [ ":cpu_features_linux" ]
+       sources += [ "source/cpu_features_linux.cc" ]
      }
 -
 -    libs += [ "rt" ]
    }
  
-   if (is_ios || is_mac) {
+   if (is_win) {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_zlib_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_zlib_BUILD.gn
deleted file mode 100644
index 220b050cab91..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_zlib_BUILD.gn
+++ /dev/null
@@ -1,20 +0,0 @@
---- src/3rdparty/chromium/third_party/zlib/BUILD.gn.orig	2018-11-13 18:25:11 UTC
-+++ src/3rdparty/chromium/third_party/zlib/BUILD.gn
-@@ -82,6 +82,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_fuchsia) {
-@@ -367,7 +369,7 @@ static_library("bundled_minizip") {
-     ]
-   }
- 
--  if (is_mac || is_ios || is_android || is_nacl) {
-+  if (is_mac || is_ios || is_android || is_nacl || is_bsd) {
-     # Mac, Android and the BSDs don't have fopen64, ftello64, or fseeko64. We
-     # use fopen, ftell, and fseek instead on these systems.
-     defines = [ "USE_FILE32API" ]
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_zlib_cpu__features.c b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_zlib_cpu__features.c
index 3d6dd60c97df..08d1ae81c1a1 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_zlib_cpu__features.c
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_zlib_cpu__features.c
@@ -1,55 +1,39 @@
---- src/3rdparty/chromium/third_party/zlib/cpu_features.c.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/third_party/zlib/cpu_features.c.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/third_party/zlib/cpu_features.c
-@@ -24,11 +24,20 @@ int ZLIB_INTERNAL x86_cpu_enable_simd = 0;
+@@ -31,11 +31,20 @@ int ZLIB_INTERNAL x86_cpu_enable_simd = 0;
  
  #ifndef CPU_NO_SIMD
  
 -#if defined(ARMV8_OS_ANDROID) || defined(ARMV8_OS_LINUX) || defined(ARMV8_OS_FUCHSIA)
 +#if defined(ARMV8_OS_ANDROID) || defined(ARMV8_OS_LINUX) || defined(ARMV8_OS_FUCHSIA) || defined(ARMV8_OS_FREEBSD)
  #include <pthread.h>
  #endif
  
 -#if defined(ARMV8_OS_ANDROID)
 +#if defined(ARMV8_OS_FREEBSD)
 +#include <machine/armreg.h>
 +#include <sys/types.h>
 +#ifndef ID_AA64ISAR0_AES_VAL
 +#define ID_AA64ISAR0_AES_VAL ID_AA64ISAR0_AES
 +#endif
 +#ifndef ID_AA64ISAR0_CRC32_VAL
 +#define ID_AA64ISAR0_CRC32_VAL ID_AA64ISAR0_CRC32
 +#endif
 +#elif defined(ARMV8_OS_ANDROID)
  #include <cpu-features.h>
  #elif defined(ARMV8_OS_LINUX)
  #include <asm/hwcap.h>
-@@ -49,7 +58,7 @@ int ZLIB_INTERNAL x86_cpu_enable_simd = 0;
- static void _cpu_check_features(void);
- #endif
- 
--#if defined(ARMV8_OS_ANDROID) || defined(ARMV8_OS_LINUX) || defined(ARMV8_OS_FUCHSIA) || defined(X86_NOT_WINDOWS)
-+#if defined(ARMV8_OS_ANDROID) || defined(ARMV8_OS_LINUX) || defined(ARMV8_OS_FUCHSIA) || defined(X86_NOT_WINDOWS) || defined(ARMV8_OS_FREEBSD)
- static pthread_once_t cpu_check_inited_once = PTHREAD_ONCE_INIT;
- void ZLIB_INTERNAL cpu_check_features(void)
- {
-@@ -108,6 +117,13 @@ static void _cpu_check_features(void)
+@@ -123,6 +132,13 @@ static void _cpu_check_features(void)
  #elif defined(ARMV8_OS_WINDOWS)
      arm_cpu_enable_crc32 = IsProcessorFeaturePresent(PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE);
      arm_cpu_enable_pmull = IsProcessorFeaturePresent(PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE);
 +#elif defined(ARMV8_OS_FREEBSD)
 +    uint64_t id_aa64isar0;
 +    id_aa64isar0 = READ_SPECIALREG(id_aa64isar0_el1);
 +    if (ID_AA64ISAR0_AES_VAL(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL)
 +        arm_cpu_enable_pmull = 1;
 +    if (ID_AA64ISAR0_CRC32_VAL(id_aa64isar0) == ID_AA64ISAR0_CRC32_BASE)
 +        arm_cpu_enable_crc32 = 1;
  #endif
  }
  #endif
-@@ -145,4 +161,4 @@ static void _cpu_check_features(void)
- }
- #endif
- #endif
--#endif
-\ No newline at end of file
-+#endif
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_tools_json__schema__compiler_feature__compiler.py b/www/qt5-webengine/files/patch-src_3rdparty_chromium_tools_json__schema__compiler_feature__compiler.py
index 30d8b470674b..d4b24bc9eae4 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_tools_json__schema__compiler_feature__compiler.py
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_tools_json__schema__compiler_feature__compiler.py
@@ -1,10 +1,10 @@
---- src/3rdparty/chromium/tools/json_schema_compiler/feature_compiler.py.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/tools/json_schema_compiler/feature_compiler.py.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/tools/json_schema_compiler/feature_compiler.py
-@@ -205,6 +205,7 @@ FEATURE_GRAMMAR = (
-         'enum_map': {
-           'chromeos': 'Feature::CHROMEOS_PLATFORM',
-           'linux': 'Feature::LINUX_PLATFORM',
-+          'bsd': 'Feature::LINUX_PLATFORM',
-           'mac': 'Feature::MACOSX_PLATFORM',
-           'win': 'Feature::WIN_PLATFORM',
-         }
+@@ -243,6 +243,7 @@ FEATURE_GRAMMAR = ({
+                 'chromeos': 'Feature::CHROMEOS_PLATFORM',
+                 'lacros': 'Feature::LACROS_PLATFORM',
+                 'linux': 'Feature::LINUX_PLATFORM',
++                'bsd': 'Feature::LINUX_PLATFORM',
+                 'mac': 'Feature::MACOSX_PLATFORM',
+                 'win': 'Feature::WIN_PLATFORM',
+             }
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_tools_json__schema__compiler_model.py b/www/qt5-webengine/files/patch-src_3rdparty_chromium_tools_json__schema__compiler_model.py
index 3fb56ff65dbd..681493dad1e6 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_tools_json__schema__compiler_model.py
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_tools_json__schema__compiler_model.py
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/tools/json_schema_compiler/model.py.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/tools/json_schema_compiler/model.py.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/tools/json_schema_compiler/model.py
-@@ -602,7 +602,7 @@ class Platforms(object):
-   """
+@@ -676,7 +676,7 @@ class Platforms(object):
    CHROMEOS = _PlatformInfo("chromeos")
    CHROMEOS_TOUCH = _PlatformInfo("chromeos_touch")
+   LACROS = _PlatformInfo("lacros")
 -  LINUX = _PlatformInfo("linux")
 +  LINUX = _PlatformInfo("bsd")
    MAC = _PlatformInfo("mac")
    WIN = _PlatformInfo("win")
  
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_tools_perf_chrome__telemetry__build_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_tools_perf_chrome__telemetry__build_BUILD.gn
index 9ada0c427cf9..baefe3eef7e2 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_tools_perf_chrome__telemetry__build_BUILD.gn
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_tools_perf_chrome__telemetry__build_BUILD.gn
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/tools/perf/chrome_telemetry_build/BUILD.gn.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/tools/perf/chrome_telemetry_build/BUILD.gn.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/tools/perf/chrome_telemetry_build/BUILD.gn
-@@ -47,7 +47,7 @@ group("telemetry_chrome_test") {
+@@ -43,7 +43,7 @@ group("telemetry_chrome_test") {
      data_deps += [ "//chrome:reorder_imports" ]
    }
  
--  if (is_linux) {
-+  if (is_linux && !is_bsd) {
-     data_deps += [
-       "//third_party/breakpad:dump_syms($host_toolchain)",
-       "//third_party/crashpad/crashpad/tools:crashpad_database_util",
+-  if (is_linux || is_chromeos) {
++  if ((is_linux || is_chromeos) && !is_bsd) {
+     data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ]
+ 
+     # CrOS currently has issues with the locally compiled version of
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_aura_test_ui__controls__ozone.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_aura_test_ui__controls__ozone.cc
new file mode 100644
index 000000000000..06c27427ce6e
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_aura_test_ui__controls__ozone.cc
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/ui/aura/test/ui_controls_ozone.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/ui/aura/test/ui_controls_ozone.cc
+@@ -348,7 +348,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.
+-#if !defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if !defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ ui_controls::UIControlsAura* CreateUIControlsAura(WindowTreeHost* host) {
+   return new UIControlsOzone(host);
+ }
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_clipboard_clipboard__constants.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_clipboard_clipboard__constants.cc
new file mode 100644
index 000000000000..b6c26bb76e85
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_clipboard_clipboard__constants.cc
@@ -0,0 +1,16 @@
+--- src/3rdparty/chromium/ui/base/clipboard/clipboard_constants.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/ui/base/clipboard/clipboard_constants.cc
+@@ -16,11 +16,11 @@ const char kMimeTypePNG[] = "image/png";
+ const char kMimeTypeRTF[] = "text/rtf";
+ const char kMimeTypePNG[] = "image/png";
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ const char kMimeTypeLinuxUtf8String[] = "UTF8_STRING";
+ const char kMimeTypeLinuxString[] = "STRING";
+ const char kMimeTypeLinuxText[] = "TEXT";
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ 
+ #if !defined(OS_APPLE) || defined(TOOLKIT_QT)
+ const char kMimeTypeWebCustomData[] = "chromium/x-web-custom-data";
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_clipboard_clipboard__constants.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_clipboard_clipboard__constants.h
new file mode 100644
index 000000000000..0ededdadbfe5
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_clipboard_clipboard__constants.h
@@ -0,0 +1,19 @@
+--- src/3rdparty/chromium/ui/base/clipboard/clipboard_constants.h.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/ui/base/clipboard/clipboard_constants.h
+@@ -37,14 +37,14 @@ COMPONENT_EXPORT(UI_BASE_CLIPBOARD_TYPES) extern const
+ COMPONENT_EXPORT(UI_BASE_CLIPBOARD_TYPES) extern const char kMimeTypePNG[];
+ 
+ // Linux-specific MIME type constants (also used in Fuchsia).
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ COMPONENT_EXPORT(UI_BASE_CLIPBOARD_TYPES)
+ extern const char kMimeTypeLinuxUtf8String[];
+ COMPONENT_EXPORT(UI_BASE_CLIPBOARD_TYPES)
+ extern const char kMimeTypeLinuxString[];
+ COMPONENT_EXPORT(UI_BASE_CLIPBOARD_TYPES)
+ extern const char kMimeTypeLinuxText[];
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ 
+ #if !defined(OS_APPLE) || defined(TOOLKIT_QT)
+ // TODO(dcheng): This name is temporary. See crbug.com/106449.
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_clipboard_clipboard__data__endpoint.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_clipboard_clipboard__data__endpoint.h
new file mode 100644
index 000000000000..33cbfb559986
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_clipboard_clipboard__data__endpoint.h
@@ -0,0 +1,14 @@
+--- src/3rdparty/chromium/ui/base/clipboard/clipboard_data_endpoint.h.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/ui/base/clipboard/clipboard_data_endpoint.h
+@@ -15,9 +15,9 @@ enum class EndpointType {
+ // 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/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_clipboard_clipboard__ozone.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_clipboard_clipboard__ozone.cc
new file mode 100644
index 000000000000..2d854d8e28d7
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_clipboard_clipboard__ozone.cc
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/ui/base/clipboard/clipboard_ozone.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/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/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_dragdrop_os__exchange__data__provider__factory.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_dragdrop_os__exchange__data__provider__factory.cc
index dca08fdf65ca..19b302c1c021 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_dragdrop_os__exchange__data__provider__factory.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_dragdrop_os__exchange__data__provider__factory.cc
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/ui/base/dragdrop/os_exchange_data_provider_factory.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/ui/base/dragdrop/os_exchange_data_provider_factory.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/base/dragdrop/os_exchange_data_provider_factory.cc
-@@ -8,7 +8,7 @@
+@@ -7,7 +7,7 @@
+ #include "base/notreached.h"
+ #include "build/build_config.h"
  
- #if defined(USE_X11)
- #include "ui/base/dragdrop/os_exchange_data_provider_aurax11.h"
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
- #include "ui/base/dragdrop/os_exchange_data_provider_aura.h"
- #elif defined(OS_MACOSX)
- #include "ui/base/dragdrop/os_exchange_data_provider_builder_mac.h"
-@@ -24,7 +24,7 @@ std::unique_ptr<OSExchangeData::Provider>
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "ui/base/dragdrop/os_exchange_data_provider_non_backed.h"
+ #include "ui/base/ui_base_features.h"
+ #if defined(USE_OZONE)
+@@ -51,7 +51,7 @@ OSExchangeDataProviderFactory::CreateProvider() {
+ // static
+ std::unique_ptr<OSExchangeDataProvider>
  OSExchangeDataProviderFactory::CreateProvider() {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+   if (features::IsUsingOzonePlatform())
+     return CreateProviderForLinux();
  #if defined(USE_X11)
-   return std::make_unique<OSExchangeDataProviderAuraX11>();
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
-   return std::make_unique<OSExchangeDataProviderAura>();
- #elif defined(OS_MACOSX)
-   return ui::BuildOSExchangeDataProviderMac();
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_ime_init_input__method__initializer.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_ime_init_input__method__initializer.cc
index 929bc5026046..dc972d3d301d 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_ime_init_input__method__initializer.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_ime_init_input__method__initializer.cc
@@ -1,38 +1,38 @@
---- src/3rdparty/chromium/ui/base/ime/init/input_method_initializer.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/ui/base/ime/init/input_method_initializer.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/base/ime/init/input_method_initializer.cc
-@@ -8,7 +8,7 @@
+@@ -10,7 +10,7 @@
  
  #if defined(OS_CHROMEOS)
- #include "ui/base/ime/ime_bridge.h"
+ #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/logging.h"
+ #include "base/check.h"
  #include "ui/base/ime/linux/fake_input_method_context_factory.h"
  #elif defined(OS_WIN)
-@@ -18,7 +18,7 @@
+@@ -20,7 +20,7 @@ namespace {
  
  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
-@@ -46,7 +46,7 @@ void ShutdownInputMethod() {
+@@ -48,7 +48,7 @@ void InitializeInputMethodForTesting() {
  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() {
+@@ -67,7 +67,7 @@ void ShutdownInputMethodForTesting() {
  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/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_resource_resource__bundle.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_resource_resource__bundle.cc
index 44bd2283ac1c..52872a1cb176 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_resource_resource__bundle.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_resource_resource__bundle.cc
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/ui/base/resource/resource_bundle.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/ui/base/resource/resource_bundle.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/base/resource/resource_bundle.cc
-@@ -720,7 +720,7 @@ void ResourceBundle::ReloadFonts() {
+@@ -844,7 +844,7 @@ ScaleFactor ResourceBundle::GetMaxScaleFactor() const 
  }
  
  ScaleFactor ResourceBundle::GetMaxScaleFactor() const {
--#if defined(OS_WIN) || defined(OS_LINUX)
-+#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    return max_scale_factor_;
  #else
    return GetSupportedScaleFactors().back();
-@@ -766,7 +766,7 @@ void ResourceBundle::InitSharedInstance(Delegate* dele
+@@ -897,7 +897,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);
--#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN)
-+#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN) || 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) || \
+     defined(OS_WIN)
    supported_scale_factors.push_back(SCALE_FACTOR_200P);
  #endif
- #endif
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_ui__base__features.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_ui__base__features.cc
index d1c50a11d7bb..729bc87c6899 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_ui__base__features.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_ui__base__features.cc
@@ -1,29 +1,38 @@
---- src/3rdparty/chromium/ui/base/ui_base_features.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/ui/base/ui_base_features.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/base/ui_base_features.cc
-@@ -121,7 +121,7 @@ const base::Feature kPrecisionTouchpadLogging{
+@@ -100,7 +100,7 @@ const base::Feature kExperimentalFlingAnimation {
+ // native apps on Windows.
+ 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)
+       base::FEATURE_ENABLED_BY_DEFAULT
+ #else
+       base::FEATURE_DISABLED_BY_DEFAULT
+@@ -132,7 +132,7 @@ const base::Feature kPrecisionTouchpadLogging{
      "PrecisionTouchpadLogging", base::FEATURE_DISABLED_BY_DEFAULT};
  #endif  // defined(OS_WIN)
  
--#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
-+#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+-#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)
  // Enables stylus appearing as touch when in contact with digitizer.
  const base::Feature kDirectManipulationStylus = {
-     "DirectManipulationStylus",
-@@ -131,7 +131,7 @@ const base::Feature kDirectManipulationStylus = {
+@@ -143,7 +143,7 @@ const base::Feature kDirectManipulationStylus = {
      base::FEATURE_DISABLED_BY_DEFAULT
  #endif
  };
--#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
-+#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || 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)
  
  // Enables forced colors mode for web content.
- const base::Feature kForcedColors{"ForcedColors",
-@@ -157,7 +157,7 @@ bool IsEyeDropperEnabled() {
+@@ -182,7 +182,7 @@ const base::Feature kFormControlsRefresh = {"FormContr
  // crbug.com/1012106 for the Windows launch bug, and crbug.com/1012108 for the
  // Mac launch bug.
  const base::Feature kFormControlsRefresh = {"FormControlsRefresh",
 -#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_MACOSX)
+     defined(OS_APPLE)
                                              base::FEATURE_ENABLED_BY_DEFAULT
  #else
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_ui__base__features.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_ui__base__features.h
index 558580f472c9..4f309ed50735 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_ui__base__features.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_ui__base__features.h
@@ -1,15 +1,16 @@
---- src/3rdparty/chromium/ui/base/ui_base_features.h.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/ui/base/ui_base_features.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/base/ui_base_features.h
-@@ -59,10 +59,10 @@ COMPONENT_EXPORT(UI_BASE_FEATURES)
- extern const base::Feature kEnableAutomaticUiAdjustmentsForTouch;
- #endif  // defined(OS_WIN) || defined(OS_CHROMEOS)
+@@ -60,11 +60,11 @@ COMPONENT_EXPORT(UI_BASE_FEATURES) bool IsUsingWMPoint
+ COMPONENT_EXPORT(UI_BASE_FEATURES) bool IsUsingWMPointerForTouch();
+ #endif  // defined(OS_WIN)
  
--#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
-+#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+-#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)
  COMPONENT_EXPORT(UI_BASE_FEATURES)
  extern const base::Feature kDirectManipulationStylus;
--#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
-+#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || 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)
  
- // Used to enable the new controls UI.
- COMPONENT_EXPORT(UI_BASE_FEATURES)
+ // Used to enable forced colors mode for web content.
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_webui_web__ui__util.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_webui_web__ui__util.cc
index 0a0178a00a4e..d6d8ace7e994 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_webui_web__ui__util.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_webui_web__ui__util.cc
@@ -1,11 +1,20 @@
---- src/3rdparty/chromium/ui/base/webui/web_ui_util.cc.orig	2020-03-16 14:04:24 UTC
+--- src/3rdparty/chromium/ui/base/webui/web_ui_util.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/base/webui/web_ui_util.cc
-@@ -227,7 +227,7 @@ std::string GetFontFamily() {
+@@ -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) && !defined(USE_OZONE)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) && !defined(USE_OZONE)
-   font_family = ui::ResourceBundle::GetSharedInstance().GetFont(
-       ui::ResourceBundle::BaseFont).GetFontName() + ", " + font_family;
- #endif
+-#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/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_x_x11__shm__image__pool.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_x_x11__shm__image__pool.cc
index 770470929ca2..7b9e94c89cb6 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_x_x11__shm__image__pool.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_base_x_x11__shm__image__pool.cc
@@ -1,43 +1,25 @@
---- src/3rdparty/chromium/ui/base/x/x11_shm_image_pool.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/ui/base/x/x11_shm_image_pool.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/base/x/x11_shm_image_pool.cc
 @@ -16,6 +16,7 @@
  #include "base/environment.h"
  #include "base/location.h"
  #include "base/strings/string_util.h"
 +#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"
-@@ -44,10 +45,14 @@ constexpr float kShmResizeShrinkThreshold =
+@@ -45,10 +46,14 @@ std::size_t MaxShmSegmentSizeImpl() {
      1.0f / (kShmResizeThreshold * kShmResizeThreshold);
  
  std::size_t MaxShmSegmentSizeImpl() {
 +#if defined(OS_BSD)
 +  return base::SysInfo::MaxSharedMemorySize();
 +#else
    struct shminfo info;
    if (shmctl(0, IPC_INFO, reinterpret_cast<struct shmid_ds*>(&info)) == -1)
      return 0;
    return info.shmmax;
 +#endif
  }
  
  std::size_t MaxShmSegmentSize() {
-@@ -201,7 +206,7 @@ bool XShmImagePool::Resize(const gfx::Size& pixel_size
-         shmctl(state.shminfo_.shmid, IPC_RMID, nullptr);
-         return false;
-       }
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
-       // On Linux, a shmid can still be attached after IPC_RMID if otherwise
-       // kept alive.  Detach before XShmAttach to prevent a memory leak in case
-       // the process dies.
-@@ -211,7 +216,7 @@ bool XShmImagePool::Resize(const gfx::Size& pixel_size
-       if (!XShmAttach(display_, &state.shminfo_))
-         return false;
-       state.shmem_attached_to_server_ = true;
--#if !defined(OS_LINUX)
-+#if (!defined(OS_LINUX) && !defined(OS_BSD))
-       // The Linux-specific shmctl behavior above may not be portable, so we're
-       // forced to do IPC_RMID after the server has attached to the segment.
-       // XShmAttach is asynchronous, so we must also sync.
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_compositor_compositor.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_compositor_compositor.cc
index 1f2b84b597a0..161552254131 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_compositor_compositor.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_compositor_compositor.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/ui/compositor/compositor.cc.orig	2020-03-16 14:04:24 UTC
+--- src/3rdparty/chromium/ui/compositor/compositor.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/compositor/compositor.cc
-@@ -681,7 +681,7 @@ void Compositor::OnFrameTokenChanged(uint32_t frame_to
-   NOTREACHED();
+@@ -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/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_compositor_compositor.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_compositor_compositor.h
index 9c89d86720eb..cdaef8fe166c 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_compositor_compositor.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_compositor_compositor.h
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/ui/compositor/compositor.h.orig	2020-03-16 14:04:24 UTC
+--- src/3rdparty/chromium/ui/compositor/compositor.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/compositor/compositor.h
-@@ -412,7 +412,7 @@ class COMPOSITOR_EXPORT Compositor : public cc::LayerT
-   void OnFirstSurfaceActivation(const viz::SurfaceInfo& surface_info) override;
-   void OnFrameTokenChanged(uint32_t frame_token) override;
+@@ -366,7 +366,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/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_compositor_compositor__observer.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_compositor_compositor__observer.h
index 5769d7057408..b2a1ddcb04f4 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_compositor_compositor__observer.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_compositor_compositor__observer.h
@@ -1,16 +1,16 @@
---- src/3rdparty/chromium/ui/compositor/compositor_observer.h.orig	2020-03-16 14:04:24 UTC
+--- src/3rdparty/chromium/ui/compositor/compositor_observer.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/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) {}
  
 -#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
 +#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
    // Called when a swap with new size is completed.
    virtual void OnCompositingCompleteSwapWithNewSize(ui::Compositor* compositor,
                                                      const gfx::Size& size) {}
--#endif  // defined(OS_LINUX)
-+#endif  // defined(OS_LINUX) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
    // Called at the top of the compositor's destructor, to give observers a
    // chance to remove themselves.
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_events_devices_x11_device__data__manager__x11.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_events_devices_x11_device__data__manager__x11.cc
index 1cfee738d7b0..a6d2b7c6639f 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_events_devices_x11_device__data__manager__x11.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_events_devices_x11_device__data__manager__x11.cc
@@ -1,19 +1,20 @@
---- src/3rdparty/chromium/ui/events/devices/x11/device_data_manager_x11.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/ui/events/devices/x11/device_data_manager_x11.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/events/devices/x11/device_data_manager_x11.cc
-@@ -829,6 +829,8 @@ void DeviceDataManagerX11::SetDisabledKeyboardAllowedK
+@@ -841,6 +841,9 @@ void DeviceDataManagerX11::DisableDevice(x11::Input::D
  }
  
- void DeviceDataManagerX11::DisableDevice(int deviceid) {
+ void DeviceDataManagerX11::DisableDevice(x11::Input::DeviceId deviceid) {
++#if defined(OS_BSD)
 +  NOTIMPLEMENTED();
-+#if !defined(OS_BSD)
-   blocked_devices_.set(deviceid, true);
++#else
+   blocked_devices_.set(static_cast<uint32_t>(deviceid), true);
    // TODO(rsadam@): Support blocking touchscreen devices.
    std::vector<InputDevice> keyboards = GetKeyboardDevices();
-@@ -840,6 +842,7 @@ void DeviceDataManagerX11::DisableDevice(int deviceid)
+@@ -850,6 +853,7 @@ void DeviceDataManagerX11::DisableDevice(x11::Input::D
      keyboards.erase(it);
      DeviceDataManager::OnKeyboardDevicesUpdated(keyboards);
    }
 +#endif
  }
  
- void DeviceDataManagerX11::EnableDevice(int deviceid) {
+ void DeviceDataManagerX11::EnableDevice(x11::Input::DeviceId deviceid) {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_events_event.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_events_event.cc
new file mode 100644
index 000000000000..2a6c609e9ab6
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_events_event.cc
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/ui/events/event.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/ui/events/event.cc
+@@ -469,7 +469,7 @@ MouseEvent::MouseEvent(const PlatformEvent& native_eve
+ MouseEvent::MouseEvent(const PlatformEvent& native_event)
+     : LocatedEvent(native_event),
+       changed_button_flags_(GetChangedMouseButtonFlagsFromNative(native_event)),
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD)
+       movement_(GetMouseMovementFromNative(native_event)),
+ #endif
+       pointer_details_(GetMousePointerDetailsFromNative(native_event)) {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_events_event__switches.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_events_event__switches.cc
index 4f02c6ed4a2c..fbc86d066f44 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_events_event__switches.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_events_event__switches.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/ui/events/event_switches.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/ui/events/event_switches.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/events/event_switches.cc
-@@ -17,7 +17,7 @@ const char kEnableScrollPrediction[] = "enable-scroll-
+@@ -14,7 +14,7 @@ const char kCompensateForUnstablePinchZoom[] =
  const char kCompensateForUnstablePinchZoom[] =
      "compensate-for-unstable-pinch-zoom";
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_FREEBSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  // Tells chrome to interpret events from these devices as touch events. Only
  // available with XInput 2 (i.e. X server 1.8 or above). The id's of the
  // devices can be retrieved from 'xinput list'.
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_events_event__switches.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_events_event__switches.h
index c5b1f56cbaec..d594c2a4cdf8 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_events_event__switches.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_events_event__switches.h
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/ui/events/event_switches.h.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/ui/events/event_switches.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/events/event_switches.h
-@@ -14,7 +14,7 @@ namespace switches {
- EVENTS_BASE_EXPORT extern const char kEnableScrollPrediction[];
+@@ -13,7 +13,7 @@ EVENTS_BASE_EXPORT extern const char kCompensateForUns
+ 
  EVENTS_BASE_EXPORT extern const char kCompensateForUnstablePinchZoom[];
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_FREEBSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  EVENTS_BASE_EXPORT extern const char kTouchDevices[];
  EVENTS_BASE_EXPORT extern const char kPenDevices[];
  #endif
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_events_keycodes_dom_keycode__converter.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_events_keycodes_dom_keycode__converter.cc
index 80df6c0317f1..bed2c2916b86 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_events_keycodes_dom_keycode__converter.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_events_keycodes_dom_keycode__converter.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/ui/events/keycodes/dom/keycode_converter.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/ui/events/keycodes/dom/keycode_converter.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/events/keycodes/dom/keycode_converter.cc
 @@ -20,7 +20,7 @@ namespace {
  #if defined(OS_WIN)
  #define DOM_CODE(usb, evdev, xkb, win, mac, code, id) \
    { usb, win, code }
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
+-#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #define DOM_CODE(usb, evdev, xkb, win, mac, code, id) \
    { usb, xkb, code }
- #elif defined(OS_MACOSX)
+ #elif defined(OS_APPLE)
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_events_ozone_keyboard__hook__ozone.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_events_ozone_keyboard__hook__ozone.cc
new file mode 100644
index 000000000000..2de13d50adb1
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_events_ozone_keyboard__hook__ozone.cc
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/ui/events/ozone/keyboard_hook_ozone.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/ui/events/ozone/keyboard_hook_ozone.cc
+@@ -29,7 +29,7 @@ bool KeyboardHookOzone::RegisterHook() {
+   return true;
+ }
+ 
+-#if !defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if !defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ // static
+ std::unique_ptr<KeyboardHook> KeyboardHook::CreateModifierKeyboardHook(
+     base::Optional<base::flat_set<DomCode>> dom_codes,
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_BUILD.gn
index 5f306dbe826e..59db9fb0a81b 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_BUILD.gn
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_BUILD.gn
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/ui/gfx/BUILD.gn.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/ui/gfx/BUILD.gn.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/gfx/BUILD.gn
-@@ -572,7 +572,7 @@ source_set("memory_buffer_sources") {
-     deps += [ "//third_party/libdrm" ]
+@@ -573,7 +573,7 @@ jumbo_source_set("memory_buffer_sources") {
+     deps += [ "//build/config/linux/libdrm" ]
    }
  
--  if (is_linux || is_android) {
-+  if ((is_linux || is_android) && !is_bsd) {
+-  if (is_linux || is_chromeos || is_android) {
++  if ((is_linux || is_chromeos || is_android) && !is_bsd) {
      deps += [ "//third_party/libsync" ]
    }
  
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_canvas__skia.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_canvas__skia.cc
index 8657dab86396..f690141fcf93 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_canvas__skia.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_canvas__skia.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/ui/gfx/canvas_skia.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/ui/gfx/canvas_skia.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/gfx/canvas_skia.cc
-@@ -208,7 +208,7 @@ void Canvas::DrawStringRectWithFlags(const base::strin
+@@ -206,7 +206,7 @@ void Canvas::DrawStringRectWithFlags(const base::strin
      Range range = StripAcceleratorChars(flags, &adjusted_text);
      bool elide_text = ((flags & NO_ELLIPSIS) == 0);
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
      // On Linux, eliding really means fading the end of the string. But only
      // for LTR text. RTL text is still elided (on the left) with "...".
      if (elide_text) {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_codec_jpeg__codec.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_codec_jpeg__codec.cc
index 378294dd6119..84e38e4ee395 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_codec_jpeg__codec.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_codec_jpeg__codec.cc
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/ui/gfx/codec/jpeg_codec.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/ui/gfx/codec/jpeg_codec.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/gfx/codec/jpeg_codec.cc
-@@ -207,6 +207,7 @@ bool JPEGCodec::Decode(const unsigned char* input, siz
+@@ -208,6 +208,7 @@ bool JPEGCodec::Decode(const unsigned char* input, siz
      case JCS_GRAYSCALE:
      case JCS_RGB:
      case JCS_YCbCr:
 +#ifdef JCS_EXTENSIONS
        // Choose an output colorspace and return if it is an unsupported one.
        // Same as JPEGCodec::Encode(), libjpeg-turbo supports all input formats
        // used by Chromium (i.e. RGBA and BGRA) and we just map the input
-@@ -223,6 +224,9 @@ bool JPEGCodec::Decode(const unsigned char* input, siz
+@@ -224,6 +225,9 @@ bool JPEGCodec::Decode(const unsigned char* input, siz
          NOTREACHED() << "Invalid pixel format";
          return false;
        }
 +#else
 +      cinfo.out_color_space = JCS_RGB;
 +#endif
        break;
      case JCS_CMYK:
      case JCS_YCCK:
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_codec_png__codec__unittest.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_codec_png__codec__unittest.cc
deleted file mode 100644
index f385a9e00355..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_codec_png__codec__unittest.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/3rdparty/chromium/ui/gfx/codec/png_codec_unittest.cc.orig	2019-05-23 12:39:34 UTC
-+++ src/3rdparty/chromium/ui/gfx/codec/png_codec_unittest.cc
-@@ -853,7 +853,7 @@ TEST(PNGCodec, EncodeA8SkBitmap) {
-     for (int y = 0; y < h; y++) {
-       uint8_t original_pixel = *original_bitmap.getAddr8(x, y);
-       uint32_t decoded_pixel = *decoded_bitmap.getAddr32(x, y);
--      EXPECT_TRUE(BGRAGrayEqualsA8Gray(decoded_pixel, original_pixel));
-+      EXPECT_TRUE(BGRAGrayEqualsA8Gray(SkUnPreMultiply::PMColorToColor(decoded_pixel), original_pixel));
-     }
-   }
- }
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_color__analysis.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_color__analysis.cc
deleted file mode 100644
index 4e36c51d4810..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_color__analysis.cc
+++ /dev/null
@@ -1,87 +0,0 @@
---- src/3rdparty/chromium/ui/gfx/color_analysis.cc.orig	2020-04-08 09:41:36 UTC
-+++ src/3rdparty/chromium/ui/gfx/color_analysis.cc
-@@ -18,6 +18,7 @@
- #include "base/bind.h"
- #include "base/callback.h"
- #include "base/logging.h"
-+#include "base/sys_byteorder.h"
- #include "base/numerics/ranges.h"
- #include "third_party/skia/include/core/SkBitmap.h"
- #include "third_party/skia/include/core/SkUnPreMultiply.h"
-@@ -438,10 +439,17 @@ SkColor FindClosestColor(const uint8_t* image,
-   SkColor best_color = color;
-   const uint8_t* byte = image;
-   for (int i = 0; i < width * height; ++i) {
-+#if defined(ARCH_CPU_LITTLE_ENDIAN)
-     uint8_t b = *(byte++);
-     uint8_t g = *(byte++);
-     uint8_t r = *(byte++);
-     uint8_t a = *(byte++);
-+#else
-+    uint8_t a = *(byte++);
-+    uint8_t r = *(byte++);
-+    uint8_t g = *(byte++);
-+    uint8_t b = *(byte++);
-+#endif
-     // Ignore fully transparent pixels.
-     if (a == 0)
-       continue;
-@@ -459,7 +467,6 @@ SkColor FindClosestColor(const uint8_t* image,
- 
- // For a 16x16 icon on an Intel Core i5 this function takes approximately
- // 0.5 ms to run.
--// TODO(port): This code assumes the CPU architecture is little-endian.
- SkColor CalculateKMeanColorOfBuffer(uint8_t* decoded_data,
-                                     int img_width,
-                                     int img_height,
-@@ -482,10 +489,17 @@ SkColor CalculateKMeanColorOfBuffer(uint8_t* decoded_d
-         int pixel_pos = sampler->GetSample(img_width, img_height) %
-             (img_width * img_height);
- 
-+#if defined(ARCH_CPU_LITTLE_ENDIAN)
-         uint8_t b = decoded_data[pixel_pos * 4];
-         uint8_t g = decoded_data[pixel_pos * 4 + 1];
-         uint8_t r = decoded_data[pixel_pos * 4 + 2];
-         uint8_t a = decoded_data[pixel_pos * 4 + 3];
-+#else
-+        uint8_t a = decoded_data[pixel_pos * 4];
-+        uint8_t r = decoded_data[pixel_pos * 4 + 1];
-+        uint8_t g = decoded_data[pixel_pos * 4 + 2];
-+        uint8_t b = decoded_data[pixel_pos * 4 + 3];
-+#endif
-         // Skip fully transparent pixels as they usually contain black in their
-         // RGB channels but do not contribute to the visual image.
-         if (a == 0)
-@@ -534,10 +548,17 @@ SkColor CalculateKMeanColorOfBuffer(uint8_t* decoded_d
-       uint8_t* pixel = decoded_data;
-       uint8_t* decoded_data_end = decoded_data + (img_width * img_height * 4);
-       while (pixel < decoded_data_end) {
-+#if defined(ARCH_CPU_LITTLE_ENDIAN)
-         uint8_t b = *(pixel++);
-         uint8_t g = *(pixel++);
-         uint8_t r = *(pixel++);
-         uint8_t a = *(pixel++);
-+#else
-+        uint8_t a = *(pixel++);
-+        uint8_t r = *(pixel++);
-+        uint8_t g = *(pixel++);
-+        uint8_t b = *(pixel++);
-+#endif
-         // Skip transparent pixels, see above.
-         if (a == 0)
-           continue;
-@@ -615,8 +636,12 @@ SkColor CalculateKMeanColorOfPNG(scoped_refptr<base::R
- 
-   if (png.get() && png->size() &&
-       gfx::PNGCodec::Decode(png->front(), png->size(),
--                            gfx::PNGCodec::FORMAT_BGRA, &decoded_data,
--                            &img_width, &img_height)) {
-+#if defined(ARCH_CPU_LITTLE_ENDIAN)
-+                            gfx::PNGCodec::FORMAT_BGRA,
-+#else
-+                            gfx::PNGCodec::FORMAT_ARGB,
-+#endif
-+			    &decoded_data, &img_width, &img_height)) {
-     return CalculateKMeanColorOfBuffer(&decoded_data[0], img_width, img_height,
-                                        lower_bound, upper_bound, sampler, true);
-   }
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_font__fallback__linux.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_font__fallback__linux.cc
index a7be0fc6b551..98cda6c5db7a 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_font__fallback__linux.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_font__fallback__linux.cc
@@ -1,13 +1,13 @@
---- src/3rdparty/chromium/ui/gfx/font_fallback_linux.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/ui/gfx/font_fallback_linux.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/gfx/font_fallback_linux.cc
-@@ -15,6 +15,10 @@
- #include "base/memory/ptr_util.h"
- #include "ui/gfx/font.h"
+@@ -24,6 +24,10 @@
+ #include "ui/gfx/linux/fontconfig_util.h"
+ #include "ui/gfx/platform_font.h"
  
 +#if defined(OS_BSD)
-+#  include <unistd.h>
++#include <unistd.h>
 +#endif
 +
  namespace gfx {
  
  namespace {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_font__list.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_font__list.cc
index a9e9416ccdd7..a608b07a10a5 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_font__list.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_font__list.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/ui/gfx/font_list.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/ui/gfx/font_list.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/gfx/font_list.cc
-@@ -24,7 +24,7 @@ base::LazyInstance<scoped_refptr<gfx::FontListImpl>>::
+@@ -24,7 +24,7 @@ bool IsFontFamilyAvailable(const std::string& family, 
  bool g_default_impl_initialized = false;
  
  bool IsFontFamilyAvailable(const std::string& family, SkFontMgr* fontManager) {
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    return !!fontManager->legacyMakeTypeface(family.c_str(), SkFontStyle());
  #else
    sk_sp<SkFontStyleSet> set(fontManager->matchFamily(family.c_str()));
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_font__names__testing.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_font__names__testing.cc
new file mode 100644
index 000000000000..fd36840cdf1e
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_font__names__testing.cc
@@ -0,0 +1,29 @@
+--- src/3rdparty/chromium/ui/gfx/font_names_testing.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/ui/gfx/font_names_testing.cc
+@@ -22,7 +22,7 @@ dessert.
+ dessert.
+ */
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ const char kTestFontName[] = "Arimo";
+ #elif defined(OS_ANDROID)
+ const char kTestFontName[] = "sans-serif";
+@@ -30,7 +30,7 @@ const char kTestFontName[] = "Arial";
+ const char kTestFontName[] = "Arial";
+ #endif
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ const char kSymbolFontName[] = "DejaVu Sans";
+ #elif defined(OS_ANDROID)
+ const char kSymbolFontName[] = "monospace";
+@@ -40,7 +40,7 @@ const char kSymbolFontName[] = "Symbol";
+ const char kSymbolFontName[] = "Symbol";
+ #endif
+ 
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ const char kCJKFontName[] = "Noto Sans CJK JP";
+ #elif defined(OS_ANDROID)
+ const char kCJKFontName[] = "serif";
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_font__render__params.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_font__render__params.h
index d9d29f42ba5b..c4f8d69ee201 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_font__render__params.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_font__render__params.h
@@ -1,18 +1,20 @@
---- src/3rdparty/chromium/ui/gfx/font_render_params.h.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/ui/gfx/font_render_params.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/gfx/font_render_params.h
-@@ -111,13 +111,13 @@ GFX_EXPORT FontRenderParams GetFontRenderParams(
+@@ -111,7 +111,7 @@ GFX_EXPORT FontRenderParams GetFontRenderParams(
      const FontRenderParamsQuery& query,
      std::string* family_out);
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  // Clears GetFontRenderParams()'s cache. Intended to be called by tests that are
  // changing Fontconfig's configuration.
  GFX_EXPORT void ClearFontRenderParamsCacheForTest();
- #endif
- 
--#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_ANDROID) || \
-+#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) || \
-     defined(OS_FUCHSIA)
+@@ -120,7 +120,7 @@ GFX_EXPORT float GetFontRenderParamsDeviceScaleFactor(
  // Gets the device scale factor to query the FontRenderParams.
  GFX_EXPORT float GetFontRenderParamsDeviceScaleFactor();
+ 
+-#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) || defined(OS_FUCHSIA)
+ // Sets the device scale factor for FontRenderParams to decide
+ // if it should enable subpixel positioning.
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_font__util.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_font__util.cc
index 9d20fb9830bd..81ee681ba7f0 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_font__util.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_font__util.cc
@@ -1,25 +1,25 @@
---- src/3rdparty/chromium/ui/gfx/font_util.cc.orig	2020-03-16 14:04:24 UTC
+--- src/3rdparty/chromium/ui/gfx/font_util.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/gfx/font_util.cc
 @@ -6,7 +6,7 @@
  
  #include "build/build_config.h"
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include <fontconfig/fontconfig.h>
  #include "ui/gfx/linux/fontconfig_util.h"
  #endif
 @@ -24,11 +24,11 @@ void InitializeFonts() {
    // background (resources have not yet been granted to cast) since it prevents
    // the long delay the user would have seen on first rendering.
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    // Ensures the config is created on this thread.
    FcConfig* config = GetGlobalFontConfig();
    DCHECK(config);
--#endif  // OS_LINUX
-+#endif  // OS_LINUX || OS_BSD
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
  #if defined(OS_WIN)
    gfx::win::InitializeDirectWrite();
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_gpu__memory__buffer.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_gpu__memory__buffer.cc
index 86d8a62ad8c7..d7996907dbfd 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_gpu__memory__buffer.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_gpu__memory__buffer.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/ui/gfx/gpu_memory_buffer.cc.orig	2020-03-16 14:04:24 UTC
+--- src/3rdparty/chromium/ui/gfx/gpu_memory_buffer.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/gfx/gpu_memory_buffer.cc
-@@ -28,7 +28,7 @@ GpuMemoryBufferHandle GpuMemoryBufferHandle::Clone() c
+@@ -34,7 +34,7 @@ GpuMemoryBufferHandle GpuMemoryBufferHandle::Clone() c
    handle.region = region.Duplicate();
    handle.offset = offset;
    handle.stride = stride;
--#if defined(OS_LINUX) || defined(OS_FUCHSIA)
-+#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
    handle.native_pixmap_handle = CloneHandleForIPC(native_pixmap_handle);
- #elif defined(OS_MACOSX) && !defined(OS_IOS)
-   NOTIMPLEMENTED();
+ #elif defined(OS_MAC)
+   handle.mach_port = mach_port;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_gpu__memory__buffer.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_gpu__memory__buffer.h
index 572455ab3e51..b505ea6a496e 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_gpu__memory__buffer.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_gpu__memory__buffer.h
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/ui/gfx/gpu_memory_buffer.h.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/ui/gfx/gpu_memory_buffer.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/gfx/gpu_memory_buffer.h
 @@ -15,7 +15,7 @@
  #include "ui/gfx/geometry/rect.h"
  #include "ui/gfx/gfx_export.h"
  
--#if defined(USE_OZONE) || defined(OS_LINUX)
-+#if defined(USE_OZONE) || defined(OS_LINUX) || defined(OS_BSD)
+-#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_MACOSX) && !defined(OS_IOS)
+ #elif defined(OS_MAC)
  #include "ui/gfx/mac/io_surface.h"
 @@ -69,7 +69,7 @@ struct GFX_EXPORT GpuMemoryBufferHandle {
    base::UnsafeSharedMemoryRegion region;
    uint32_t offset = 0;
    int32_t stride = 0;
--#if defined(OS_LINUX) || defined(OS_FUCHSIA)
-+#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
    NativePixmapHandle native_pixmap_handle;
- #elif defined(OS_MACOSX) && !defined(OS_IOS)
+ #elif defined(OS_MAC)
    ScopedRefCountedIOSurfaceMachPort mach_port;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_ipc_gfx__param__traits__macros.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_ipc_gfx__param__traits__macros.h
index d02d1fe690a4..78f6e696d84a 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_ipc_gfx__param__traits__macros.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_ipc_gfx__param__traits__macros.h
@@ -1,44 +1,44 @@
---- src/3rdparty/chromium/ui/gfx/ipc/gfx_param_traits_macros.h.orig	2020-03-16 14:04:24 UTC
+--- src/3rdparty/chromium/ui/gfx/ipc/gfx_param_traits_macros.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/gfx/ipc/gfx_param_traits_macros.h
 @@ -18,7 +18,7 @@
  #include "ui/gfx/selection_bound.h"
  #include "ui/gfx/swap_result.h"
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include "ui/gfx/native_pixmap_handle.h"
  #endif
  
-@@ -51,7 +51,7 @@ IPC_STRUCT_TRAITS_BEGIN(gfx::GpuMemoryBufferHandle)
+@@ -48,7 +48,7 @@ IPC_STRUCT_TRAITS_BEGIN(gfx::GpuMemoryBufferHandle)
    IPC_STRUCT_TRAITS_MEMBER(region)
    IPC_STRUCT_TRAITS_MEMBER(offset)
    IPC_STRUCT_TRAITS_MEMBER(stride)
--#if defined(OS_LINUX) || defined(OS_FUCHSIA)
-+#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
    IPC_STRUCT_TRAITS_MEMBER(native_pixmap_handle)
- #elif defined(OS_MACOSX)
+ #elif defined(OS_APPLE)
    IPC_STRUCT_TRAITS_MEMBER(mach_port)
-@@ -66,12 +66,12 @@ IPC_STRUCT_TRAITS_BEGIN(gfx::GpuMemoryBufferId)
+@@ -63,12 +63,12 @@ IPC_STRUCT_TRAITS_END()
    IPC_STRUCT_TRAITS_MEMBER(id)
  IPC_STRUCT_TRAITS_END()
  
--#if defined(OS_LINUX) || defined(OS_FUCHSIA)
-+#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_FUCHSIA) || defined(OS_BSD)
  IPC_STRUCT_TRAITS_BEGIN(gfx::NativePixmapPlane)
    IPC_STRUCT_TRAITS_MEMBER(stride)
    IPC_STRUCT_TRAITS_MEMBER(offset)
    IPC_STRUCT_TRAITS_MEMBER(size)
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    IPC_STRUCT_TRAITS_MEMBER(fd)
  #elif defined(OS_FUCHSIA)
    IPC_STRUCT_TRAITS_MEMBER(vmo)
-@@ -80,7 +80,7 @@ IPC_STRUCT_TRAITS_END()
+@@ -77,7 +77,7 @@ IPC_STRUCT_TRAITS_BEGIN(gfx::NativePixmapHandle)
  
  IPC_STRUCT_TRAITS_BEGIN(gfx::NativePixmapHandle)
    IPC_STRUCT_TRAITS_MEMBER(planes)
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    IPC_STRUCT_TRAITS_MEMBER(modifier)
  #endif
  #if defined(OS_FUCHSIA)
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_linux_client__native__pixmap__dmabuf.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_linux_client__native__pixmap__dmabuf.cc
index de8acf70126a..22d7cb245d95 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_linux_client__native__pixmap__dmabuf.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_linux_client__native__pixmap__dmabuf.cc
@@ -1,25 +1,25 @@
---- src/3rdparty/chromium/ui/gfx/linux/client_native_pixmap_dmabuf.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/ui/gfx/linux/client_native_pixmap_dmabuf.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/gfx/linux/client_native_pixmap_dmabuf.cc
 @@ -5,7 +5,9 @@
  #include "ui/gfx/linux/client_native_pixmap_dmabuf.h"
  
  #include <fcntl.h>
 +#if !defined(__FreeBSD__)
  #include <linux/version.h>
 +#endif
  #include <stddef.h>
  #include <sys/ioctl.h>
  #include <sys/mman.h>
-@@ -17,11 +19,7 @@
- #include "base/strings/stringprintf.h"
- #include "base/trace_event/trace_event.h"
+@@ -27,11 +29,7 @@
+ #include "ui/gfx/buffer_format_util.h"
+ #include "ui/gfx/switches.h"
  
 -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
 -#include <linux/dma-buf.h>
 -#else
 -#include <linux/types.h>
 -
 +#if defined(__FreeBSD__)
  struct dma_buf_sync {
    __u64 flags;
  };
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_mojom_buffer__types__mojom__traits.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_mojom_buffer__types__mojom__traits.cc
index 5130bc6bf0fb..c158a55f04de 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_mojom_buffer__types__mojom__traits.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_mojom_buffer__types__mojom__traits.cc
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/ui/gfx/mojom/buffer_types_mojom_traits.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/ui/gfx/mojom/buffer_types_mojom_traits.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/gfx/mojom/buffer_types_mojom_traits.cc
 @@ -33,7 +33,7 @@ gfx::mojom::GpuMemoryBufferPlatformHandlePtr StructTra
        return gfx::mojom::GpuMemoryBufferPlatformHandle::NewSharedMemoryHandle(
            std::move(handle.region));
      case gfx::NATIVE_PIXMAP:
--#if defined(OS_LINUX) || defined(USE_OZONE)
-+#if defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) || defined(USE_OZONE)
        return gfx::mojom::GpuMemoryBufferPlatformHandle::NewNativePixmapHandle(
            std::move(handle.native_pixmap_handle));
  #else
 @@ -109,7 +109,7 @@ bool StructTraits<gfx::mojom::GpuMemoryBufferHandleDat
        out->type = gfx::SHARED_MEMORY_BUFFER;
        out->region = std::move(platform_handle->get_shared_memory_handle());
        return true;
--#if defined(OS_LINUX) || defined(USE_OZONE)
-+#if defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) || defined(USE_OZONE)
      case gfx::mojom::GpuMemoryBufferPlatformHandleDataView::Tag::
          NATIVE_PIXMAP_HANDLE:
        out->type = gfx::NATIVE_PIXMAP;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_mojom_native__handle__types__mojom__traits.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_mojom_native__handle__types__mojom__traits.cc
index 8d66cacd0de3..a6ef625a7437 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_mojom_native__handle__types__mojom__traits.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_mojom_native__handle__types__mojom__traits.cc
@@ -1,56 +1,56 @@
---- src/3rdparty/chromium/ui/gfx/mojom/native_handle_types_mojom_traits.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/ui/gfx/mojom/native_handle_types_mojom_traits.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/gfx/mojom/native_handle_types_mojom_traits.cc
-@@ -8,15 +8,15 @@
+@@ -8,15 +8,15 @@ namespace mojo {
  
  namespace mojo {
  
--#if defined(OS_LINUX) || defined(USE_OZONE)
-+#if defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) || defined(USE_OZONE)
  mojo::PlatformHandle StructTraits<
      gfx::mojom::NativePixmapPlaneDataView,
      gfx::NativePixmapPlane>::buffer_handle(gfx::NativePixmapPlane& plane) {
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    return mojo::PlatformHandle(std::move(plane.fd));
  #elif defined(OS_FUCHSIA)
    return mojo::PlatformHandle(std::move(plane.vmo));
--#endif  // defined(OS_LINUX)
-+#endif  // defined(OS_LINUX) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  }
  
  bool StructTraits<
 @@ -28,7 +28,7 @@ bool StructTraits<
    out->size = data.size();
  
    mojo::PlatformHandle handle = data.TakeBufferHandle();
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    if (!handle.is_fd())
      return false;
    out->fd = handle.TakeFD();
 @@ -36,7 +36,7 @@ bool StructTraits<
    if (!handle.is_handle())
      return false;
    out->vmo = zx::vmo(handle.TakeHandle());
--#endif  // defined(OS_LINUX)
-+#endif  // defined(OS_LINUX) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
    return true;
  }
 @@ -45,7 +45,7 @@ bool StructTraits<
      gfx::mojom::NativePixmapHandleDataView,
      gfx::NativePixmapHandle>::Read(gfx::mojom::NativePixmapHandleDataView data,
                                     gfx::NativePixmapHandle* out) {
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    out->modifier = data.modifier();
  #endif
  
 @@ -58,6 +58,6 @@ bool StructTraits<
  
    return data.ReadPlanes(&out->planes);
  }
--#endif  // defined(OS_LINUX) || defined(USE_OZONE)
-+#endif  // defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(USE_OZONE)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) || defined(USE_OZONE)
  
  }  // namespace mojo
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_mojom_native__handle__types__mojom__traits.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_mojom_native__handle__types__mojom__traits.h
index 2e6b5cf097c7..67e065b7bef8 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_mojom_native__handle__types__mojom__traits.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_mojom_native__handle__types__mojom__traits.h
@@ -1,36 +1,36 @@
---- src/3rdparty/chromium/ui/gfx/mojom/native_handle_types_mojom_traits.h.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/ui/gfx/mojom/native_handle_types_mojom_traits.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/gfx/mojom/native_handle_types_mojom_traits.h
 @@ -14,13 +14,13 @@
  #include "mojo/public/cpp/system/platform_handle.h"
  #include "ui/gfx/mojom/native_handle_types.mojom-shared.h"
  
--#if defined(OS_LINUX) || defined(USE_OZONE)
-+#if defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) || defined(USE_OZONE)
  #include "ui/gfx/native_pixmap_handle.h"
  #endif
  
  namespace mojo {
  
--#if defined(OS_LINUX) || defined(USE_OZONE)
-+#if defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) || defined(USE_OZONE)
  template <>
  struct COMPONENT_EXPORT(GFX_NATIVE_HANDLE_TYPES_SHARED_MOJOM_TRAITS)
      StructTraits<gfx::mojom::NativePixmapPlaneDataView,
 @@ -48,7 +48,7 @@ struct COMPONENT_EXPORT(GFX_NATIVE_HANDLE_TYPES_SHARED
      return pixmap_handle.planes;
    }
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_CHROMEOS)
    static uint64_t modifier(const gfx::NativePixmapHandle& pixmap_handle) {
      return pixmap_handle.modifier;
    }
 @@ -72,7 +72,7 @@ struct COMPONENT_EXPORT(GFX_NATIVE_HANDLE_TYPES_SHARED
    static bool Read(gfx::mojom::NativePixmapHandleDataView data,
                     gfx::NativePixmapHandle* out);
  };
--#endif  // defined(OS_LINUX) || defined(USE_OZONE)
-+#endif  // defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(USE_OZONE)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) || defined(USE_OZONE)
  
  }  // namespace mojo
  
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_native__pixmap__handle.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_native__pixmap__handle.cc
index 34b47cb78998..8154b16835d0 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_native__pixmap__handle.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_native__pixmap__handle.cc
@@ -1,38 +1,49 @@
---- src/3rdparty/chromium/ui/gfx/native_pixmap_handle.cc.orig	2020-03-16 14:04:24 UTC
+--- src/3rdparty/chromium/ui/gfx/native_pixmap_handle.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/gfx/native_pixmap_handle.cc
-@@ -33,7 +33,7 @@ NativePixmapPlane::NativePixmapPlane() : stride(0), of
+@@ -16,6 +16,10 @@
+ #include "base/posix/eintr_wrapper.h"
+ #endif
+ 
++#if defined(OS_BSD)
++#include <unistd.h>
++#endif
++
+ #if defined(OS_FUCHSIA)
+ #include <lib/zx/vmo.h>
+ #include "base/fuchsia/fuchsia_logging.h"
+@@ -34,7 +38,7 @@ NativePixmapPlane::NativePixmapPlane(int stride,
  NativePixmapPlane::NativePixmapPlane(int stride,
                                       int offset,
                                       uint64_t size
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
                                       ,
                                       base::ScopedFD fd
  #elif defined(OS_FUCHSIA)
-@@ -44,7 +44,7 @@ NativePixmapPlane::NativePixmapPlane(int stride,
+@@ -45,7 +49,7 @@ NativePixmapPlane::NativePixmapPlane(int stride,
      : stride(stride),
        offset(offset),
        size(size)
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
        ,
        fd(std::move(fd))
  #elif defined(OS_FUCHSIA)
-@@ -72,7 +72,7 @@ NativePixmapHandle& NativePixmapHandle::operator=(Nati
+@@ -73,7 +77,7 @@ NativePixmapHandle CloneHandleForIPC(const NativePixma
  NativePixmapHandle CloneHandleForIPC(const NativePixmapHandle& handle) {
    NativePixmapHandle clone;
    for (auto& plane : handle.planes) {
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
      DCHECK(plane.fd.is_valid());
      base::ScopedFD fd_dup(HANDLE_EINTR(dup(plane.fd.get())));
      if (!fd_dup.is_valid()) {
-@@ -98,7 +98,7 @@ NativePixmapHandle CloneHandleForIPC(const NativePixma
+@@ -99,7 +103,7 @@ NativePixmapHandle CloneHandleForIPC(const NativePixma
  #endif
    }
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    clone.modifier = handle.modifier;
  #endif
  
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_native__pixmap__handle.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_native__pixmap__handle.h
index a637774f9203..bc3280820cdc 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_native__pixmap__handle.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_native__pixmap__handle.h
@@ -1,38 +1,38 @@
---- src/3rdparty/chromium/ui/gfx/native_pixmap_handle.h.orig	2020-03-16 14:04:24 UTC
+--- src/3rdparty/chromium/ui/gfx/native_pixmap_handle.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/gfx/native_pixmap_handle.h
 @@ -15,7 +15,7 @@
  #include "build/build_config.h"
  #include "ui/gfx/gfx_export.h"
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  #include "base/files/scoped_file.h"
  #endif
  
 @@ -32,7 +32,7 @@ struct GFX_EXPORT NativePixmapPlane {
    NativePixmapPlane(int stride,
                      int offset,
                      uint64_t size
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
                      ,
                      base::ScopedFD fd
  #elif defined(OS_FUCHSIA)
 @@ -53,7 +53,7 @@ struct GFX_EXPORT NativePixmapPlane {
    // This is necessary to map the buffers.
    uint64_t size;
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    // File descriptor for the underlying memory object (usually dmabuf).
    base::ScopedFD fd;
  #elif defined(OS_FUCHSIA)
 @@ -82,7 +82,7 @@ struct GFX_EXPORT NativePixmapHandle {
  
    std::vector<NativePixmapPlane> planes;
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    // The modifier is retrieved from GBM library and passed to EGL driver.
    // Generally it's platform specific, and we don't need to modify it in
    // Chromium code. Also one per plane per entry.
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_native__widget__types.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_native__widget__types.h
new file mode 100644
index 000000000000..549c226e14a0
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_native__widget__types.h
@@ -0,0 +1,20 @@
+--- src/3rdparty/chromium/ui/gfx/native_widget_types.h.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/ui/gfx/native_widget_types.h
+@@ -103,7 +103,7 @@ class SkBitmap;
+ #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/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_render__text.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_render__text.cc
index d62797e78114..0ae8de4fade9 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_render__text.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_render__text.cc
@@ -1,46 +1,46 @@
---- src/3rdparty/chromium/ui/gfx/render_text.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/ui/gfx/render_text.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/gfx/render_text.cc
-@@ -942,32 +942,33 @@ void RenderText::SetDisplayOffset(int horizontal_offse
+@@ -1191,32 +1191,33 @@ void RenderText::SetDisplayOffset(int horizontal_offse
    const int extra_content = GetContentWidth() - display_rect_.width();
    const int cursor_width = cursor_enabled_ ? 1 : 0;
  
 -  int min_offset = 0;
 -  int max_offset = 0;
 +  // avoid collisions with vm_map.h on FreeBSD --cmt
 +  int _min_offset = 0;
 +  int _max_offset = 0;
    if (extra_content > 0) {
      switch (GetCurrentHorizontalAlignment()) {
        case ALIGN_LEFT:
 -        min_offset = -extra_content;
 +        _min_offset = -extra_content;
          break;
        case ALIGN_RIGHT:
 -        max_offset = extra_content;
 +        _max_offset = extra_content;
          break;
        case ALIGN_CENTER:
          // The extra space reserved for cursor at the end of the text is ignored
          // when centering text. So, to calculate the valid range for offset, we
          // exclude that extra space, calculate the range, and add it back to the
          // range (if cursor is enabled).
 -        min_offset = -(extra_content - cursor_width + 1) / 2 - cursor_width;
 -        max_offset = (extra_content - cursor_width) / 2;
 +        _min_offset = -(extra_content - cursor_width + 1) / 2 - cursor_width;
 +        _max_offset = (extra_content - cursor_width) / 2;
          break;
        default:
          break;
      }
    }
 -  if (horizontal_offset < min_offset)
 -    horizontal_offset = min_offset;
 -  else if (horizontal_offset > max_offset)
 -    horizontal_offset = max_offset;
 +  if (horizontal_offset < _min_offset)
 +    horizontal_offset = _min_offset;
 +  else if (horizontal_offset > _max_offset)
 +    horizontal_offset = _max_offset;
  
    cached_bounds_and_offset_valid_ = true;
    display_offset_.set_x(horizontal_offset);
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_skbitmap__operations__unittest.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_skbitmap__operations__unittest.cc
deleted file mode 100644
index 32401178fff2..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gfx_skbitmap__operations__unittest.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/3rdparty/chromium/ui/gfx/skbitmap_operations_unittest.cc.orig	2019-05-23 12:39:34 UTC
-+++ src/3rdparty/chromium/ui/gfx/skbitmap_operations_unittest.cc
-@@ -238,7 +238,7 @@ TEST(SkBitmapOperationsTest, CreateHSLShiftedBitmapHue
- 
-   for (int y = 0, i = 0; y < src_h; y++) {
-     for (int x = 0; x < src_w; x++) {
--      *src.getAddr32(x, y) = SkColorSetARGB(255, 0, 0, i % 255);
-+      *src.getAddr32(x, y) = SkPackARGB32(255, 0, 0, i % 255);
-       i++;
-     }
-   }
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_BUILD.gn
index d6f4d28e01df..0a2fb3d2dd9f 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_BUILD.gn
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_BUILD.gn
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/ui/gl/BUILD.gn.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/ui/gl/BUILD.gn.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/gl/BUILD.gn
-@@ -200,7 +200,7 @@ component("gl") {
-       }
+@@ -224,7 +224,7 @@ jumbo_component("gl") {
+       ]
      }
  
 -    if (is_posix && !is_fuchsia && !is_mac) {
 +    if (is_posix && !is_fuchsia && !is_mac && !is_bsd) {
        # Windows has USE_EGL but doesn't support base::FileDescriptor.
        # libsync isn't supported or needed on MacOSX.
        # Fuchsia is excluded due to a libsync dependency and because it's
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_generate__bindings.py b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_generate__bindings.py
index 2b9811b282d4..378601900a26 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_generate__bindings.py
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_generate__bindings.py
@@ -1,12 +1,12 @@
---- src/3rdparty/chromium/ui/gl/generate_bindings.py.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/ui/gl/generate_bindings.py.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/gl/generate_bindings.py
-@@ -2350,6 +2350,9 @@ GLX_FUNCTIONS = [
+@@ -2902,6 +2902,9 @@ GLX_FUNCTIONS = [
    'arguments':
        'Display* dpy, GLXDrawable drawable, int32_t* numerator, '
        'int32_t* denominator' },
 +{ 'return_type': '__GLXextFuncPtr',
 +  'names': ['glXGetProcAddressARB'],
 +  'arguments': 'const GLubyte* procName', },
  { 'return_type': 'void',
    'names': ['glXGetSelectedEvent'],
    'arguments': 'Display* dpy, GLXDrawable drawable, unsigned long* mask', },
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_gl__bindings__api__autogen__glx.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_gl__bindings__api__autogen__glx.h
index ff1e3d767a99..a7155e7fff06 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_gl__bindings__api__autogen__glx.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_gl__bindings__api__autogen__glx.h
@@ -1,10 +1,10 @@
---- src/3rdparty/chromium/ui/gl/gl_bindings_api_autogen_glx.h.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/ui/gl/gl_bindings_api_autogen_glx.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/gl/gl_bindings_api_autogen_glx.h
-@@ -84,6 +84,7 @@ bool glXGetMscRateOMLFn(Display* dpy,
+@@ -88,6 +88,7 @@ bool glXGetMscRateOMLFn(Display* dpy,
                          GLXDrawable drawable,
                          int32_t* numerator,
                          int32_t* denominator) override;
 +__GLXextFuncPtr glXGetProcAddressARBFn(const GLubyte* procName) override;
  void glXGetSelectedEventFn(Display* dpy,
                             GLXDrawable drawable,
                             unsigned long* mask) override;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_gl__bindings__autogen__glx.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_gl__bindings__autogen__glx.cc
index 39eeaa6fd8fd..9edd8643830d 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_gl__bindings__autogen__glx.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_gl__bindings__autogen__glx.cc
@@ -1,61 +1,61 @@
---- src/3rdparty/chromium/ui/gl/gl_bindings_autogen_glx.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/ui/gl/gl_bindings_autogen_glx.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/gl/gl_bindings_autogen_glx.cc
 @@ -119,6 +119,8 @@ void DriverGLX::InitializeExtensionBindings() {
  
    ext.b_GLX_ARB_create_context =
        gfx::HasExtension(extensions, "GLX_ARB_create_context");
 +  ext.b_GLX_ARB_get_proc_address =
 +      gfx::HasExtension(extensions, "GLX_ARB_get_proc_address");
    ext.b_GLX_EXT_swap_control =
        gfx::HasExtension(extensions, "GLX_EXT_swap_control");
    ext.b_GLX_EXT_texture_from_pixmap =
 @@ -149,6 +151,11 @@ void DriverGLX::InitializeExtensionBindings() {
              GetGLProcAddress("glXCreateContextAttribsARB"));
    }
  
 +  if (ext.b_GLX_ARB_get_proc_address) {
 +    fn.glXGetProcAddressARBFn = reinterpret_cast<glXGetProcAddressARBProc>(
 +        GetGLProcAddress("glXGetProcAddressARB"));
 +  }
 +
    if (ext.b_GLX_SGIX_fbconfig) {
      fn.glXGetFBConfigFromVisualSGIXFn =
          reinterpret_cast<glXGetFBConfigFromVisualSGIXProc>(
 @@ -350,6 +357,10 @@ bool GLXApiBase::glXGetMscRateOMLFn(Display* dpy,
    return driver_->fn.glXGetMscRateOMLFn(dpy, drawable, numerator, denominator);
  }
  
 +__GLXextFuncPtr GLXApiBase::glXGetProcAddressARBFn(const GLubyte* procName) {
 +  return driver_->fn.glXGetProcAddressARBFn(procName);
 +}
 +
  void GLXApiBase::glXGetSelectedEventFn(Display* dpy,
                                         GLXDrawable drawable,
                                         unsigned long* mask) {
-@@ -650,6 +661,11 @@ bool TraceGLXApi::glXGetMscRateOMLFn(Display* dpy,
+@@ -651,6 +662,11 @@ bool TraceGLXApi::glXGetMscRateOMLFn(Display* dpy,
    return glx_api_->glXGetMscRateOMLFn(dpy, drawable, numerator, denominator);
  }
  
 +__GLXextFuncPtr TraceGLXApi::glXGetProcAddressARBFn(const GLubyte* procName) {
 +  TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetProcAddressARB")
 +  return glx_api_->glXGetProcAddressARBFn(procName);
 +}
 +
  void TraceGLXApi::glXGetSelectedEventFn(Display* dpy,
                                          GLXDrawable drawable,
                                          unsigned long* mask) {
-@@ -1072,6 +1088,14 @@ bool DebugGLXApi::glXGetMscRateOMLFn(Display* dpy,
+@@ -1072,6 +1088,14 @@ bool LogGLXApi::glXGetMscRateOMLFn(Display* dpy,
                   << static_cast<const void*>(denominator) << ")");
    bool result =
        glx_api_->glXGetMscRateOMLFn(dpy, drawable, numerator, denominator);
 +  GL_SERVICE_LOG("GL_RESULT: " << result);
 +  return result;
 +}
 +
 +__GLXextFuncPtr LogGLXApi::glXGetProcAddressARBFn(const GLubyte* procName) {
 +  GL_SERVICE_LOG("glXGetProcAddressARB"
 +                 << "(" << static_cast<const void*>(procName) << ")");
 +  __GLXextFuncPtr result = glx_api_->glXGetProcAddressARBFn(procName);
    GL_SERVICE_LOG("GL_RESULT: " << result);
    return result;
  }
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_gl__features.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_gl__features.cc
new file mode 100644
index 000000000000..7da772c10817
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_gl__features.cc
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/ui/gl/gl_features.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/ui/gl/gl_features.cc
+@@ -14,7 +14,7 @@ const base::Feature kDefaultPassthroughCommandDecoder{
+ 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/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_gl__fence.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_gl__fence.cc
index 378cab84bfd9..ac8bd4751079 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_gl__fence.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_gl__fence.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/ui/gl/gl_fence.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/ui/gl/gl_fence.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/gl/gl_fence.cc
 @@ -18,7 +18,7 @@
  #include "ui/gl/gl_fence_apple.h"
  #endif
  
--#if defined(USE_EGL) && defined(OS_POSIX) && !defined(OS_MACOSX)
-+#if defined(USE_EGL) && defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_FREEBSD)
+-#if defined(USE_EGL) && defined(OS_POSIX) && !defined(OS_APPLE)
++#if defined(USE_EGL) && defined(OS_POSIX) && !defined(OS_APPLE) && !defined(OS_BSD)
  #define USE_GL_FENCE_ANDROID_NATIVE_FENCE_SYNC
  #include "ui/gl/gl_fence_android_native_fence_sync.h"
  #include "ui/gl/gl_surface_egl.h"
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_sync__control__vsync__provider.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_sync__control__vsync__provider.cc
index 37ecce05777e..bb30f1c0428c 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_sync__control__vsync__provider.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_sync__control__vsync__provider.cc
@@ -1,43 +1,43 @@
---- src/3rdparty/chromium/ui/gl/sync_control_vsync_provider.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/ui/gl/sync_control_vsync_provider.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/gl/sync_control_vsync_provider.cc
 @@ -11,7 +11,7 @@
  #include "base/trace_event/trace_event.h"
  #include "build/build_config.h"
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  // These constants define a reasonable range for a calculated refresh interval.
  // Calculating refreshes out of this range will be considered a fatal error.
  const int64_t kMinVsyncIntervalUs = base::Time::kMicrosecondsPerSecond / 400;
-@@ -26,7 +26,7 @@ const double kRelativeIntervalDifferenceThreshold = 0.
+@@ -26,7 +26,7 @@ SyncControlVSyncProvider::SyncControlVSyncProvider() :
  namespace gl {
  
  SyncControlVSyncProvider::SyncControlVSyncProvider() : gfx::VSyncProvider() {
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    // On platforms where we can't get an accurate reading on the refresh
    // rate we fall back to the assumption that we're displaying 60 frames
    // per second.
 @@ -48,7 +48,7 @@ bool SyncControlVSyncProvider::GetVSyncParametersIfAva
      base::TimeTicks* timebase_out,
      base::TimeDelta* interval_out) {
    TRACE_EVENT0("gpu", "SyncControlVSyncProvider::GetVSyncParameters");
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    // The actual clock used for the system time returned by glXGetSyncValuesOML
    // is unspecified. In practice, the clock used is likely to be either
    // CLOCK_REALTIME or CLOCK_MONOTONIC, so we compare the returned time to the
-@@ -157,11 +157,11 @@ bool SyncControlVSyncProvider::GetVSyncParametersIfAva
+@@ -156,11 +156,11 @@ bool SyncControlVSyncProvider::GetVSyncParametersIfAva
    return true;
  #else
    return false;
--#endif  // defined(OS_LINUX)
-+#endif  // defined(OS_LINUX) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  }
  
  bool SyncControlVSyncProvider::SupportGetVSyncParametersIfAvailable() const {
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    return true;
  #else
    return false;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_sync__control__vsync__provider.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_sync__control__vsync__provider.h
index f6bdbc976e0f..e4bc8f6b06d3 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_sync__control__vsync__provider.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_sync__control__vsync__provider.h
@@ -1,34 +1,34 @@
---- src/3rdparty/chromium/ui/gl/sync_control_vsync_provider.h.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/ui/gl/sync_control_vsync_provider.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/gl/sync_control_vsync_provider.h
 @@ -26,11 +26,11 @@ class SyncControlVSyncProvider : public gfx::VSyncProv
    bool SupportGetVSyncParametersIfAvailable() const override;
  
    static constexpr bool IsSupported() {
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
      return true;
  #else
      return false;
--#endif  // defined(OS_LINUX)
-+#endif  // defined(OS_LINUX) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    }
  
   protected:
 @@ -41,7 +41,7 @@ class SyncControlVSyncProvider : public gfx::VSyncProv
    virtual bool GetMscRate(int32_t* numerator, int32_t* denominator) = 0;
  
   private:
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    base::TimeTicks last_timebase_;
    uint64_t last_media_stream_counter_ = 0;
    base::TimeDelta last_good_interval_;
 @@ -52,7 +52,7 @@ class SyncControlVSyncProvider : public gfx::VSyncProv
    // from configuration change (monitor reconfiguration, moving windows
    // between monitors, suspend and resume, etc.).
    base::queue<base::TimeDelta> last_computed_intervals_;
--#endif  // defined(OS_LINUX)
-+#endif  // defined(OS_LINUX) || defined(OS_BSD)
+-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  
    DISALLOW_COPY_AND_ASSIGN(SyncControlVSyncProvider);
  };
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gtk_printing_print__dialog__gtk.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gtk_printing_print__dialog__gtk.cc
new file mode 100644
index 000000000000..78997dd6a56a
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gtk_printing_print__dialog__gtk.cc
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/ui/gtk/printing/print_dialog_gtk.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/ui/gtk/printing/print_dialog_gtk.cc
+@@ -388,7 +388,7 @@ void PrintDialogGtk::ShowDialog(
+   // Since we only generate PDF, only show printers that support PDF.
+   // TODO(thestig) Add more capabilities to support?
+   GtkPrintCapabilities cap = static_cast<GtkPrintCapabilities>(
+-      GTK_PRINT_CAPABILITY_GENERATE_PDF | GTK_PRINT_CAPABILITY_PAGE_SET |
++      GTK_PRINT_CAPABILITY_GENERATE_PS | GTK_PRINT_CAPABILITY_GENERATE_PDF | GTK_PRINT_CAPABILITY_PAGE_SET |
+       GTK_PRINT_CAPABILITY_COPIES | GTK_PRINT_CAPABILITY_COLLATE |
+       GTK_PRINT_CAPABILITY_REVERSE);
+   gtk_print_unix_dialog_set_manual_capabilities(GTK_PRINT_UNIX_DIALOG(dialog_),
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_message__center_public_cpp_message__center__constants.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_message__center_public_cpp_message__center__constants.h
deleted file mode 100644
index fb0a85451b8a..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_message__center_public_cpp_message__center__constants.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/3rdparty/chromium/ui/message_center/public/cpp/message_center_constants.h.orig	2019-11-27 21:12:25 UTC
-+++ src/3rdparty/chromium/ui/message_center/public/cpp/message_center_constants.h
-@@ -105,7 +105,7 @@ const int kButtonHorizontalPadding = 16;   // In DIPs.
- const int kButtonIconTopPadding = 11;      // In DIPs.
- const int kButtonIconToTitlePadding = 16;  // In DIPs.
- 
--#if !defined(OS_LINUX) || defined(USE_AURA)
-+#if (!defined(OS_LINUX) && !defined(OS_BSD)) || defined(USE_AURA)
- constexpr SkColor kButtonSeparatorColor = SkColorSetRGB(234, 234, 234);
- constexpr SkColor kHoveredButtonBackgroundColor = SkColorSetRGB(243, 243, 243);
- #endif
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_message__center_views_message__popup__view.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_message__center_views_message__popup__view.cc
index d531007148d1..29a3b1bd3bc4 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_message__center_views_message__popup__view.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_message__center_views_message__popup__view.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/ui/message_center/views/message_popup_view.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/ui/message_center/views/message_popup_view.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/message_center/views/message_popup_view.cc
-@@ -106,7 +106,7 @@ void MessagePopupView::AutoCollapse() {
+@@ -110,7 +110,7 @@ void MessagePopupView::Show() {
  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/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_native__theme_native__theme.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_native__theme_native__theme.h
index 32974f4a9c58..e4e176c26ecc 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_native__theme_native__theme.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_native__theme_native__theme.h
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/ui/native_theme/native_theme.h.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/ui/native_theme/native_theme.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/native_theme/native_theme.h
-@@ -47,7 +47,7 @@ class NATIVE_THEME_EXPORT NativeTheme {
+@@ -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/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_native__theme_native__theme__base.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_native__theme_native__theme__base.cc
index 6a5b4a3c0cdc..6583bc3b7f48 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_native__theme_native__theme__base.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_native__theme_native__theme__base.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/ui/native_theme/native_theme_base.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/ui/native_theme/native_theme_base.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/native_theme/native_theme_base.cc
-@@ -172,7 +172,7 @@ void NativeThemeBase::Paint(cc::PaintCanvas* canvas,
+@@ -255,7 +255,7 @@ void NativeThemeBase::Paint(cc::PaintCanvas* canvas,
      case kCheckbox:
-       PaintCheckbox(canvas, state, rect, extra.button);
+       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);
-       break;
+       PaintFrameTopArea(canvas, state, rect, extra.frame_top_area,
+                         color_scheme);
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_ozone_ozone.gni b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_ozone_ozone.gni
new file mode 100644
index 000000000000..b9602a055ced
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_ozone_ozone.gni
@@ -0,0 +1,12 @@
+--- src/3rdparty/chromium/ui/ozone/ozone.gni.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/ui/ozone/ozone.gni
+@@ -72,6 +72,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) {
+       ozone_platform = "x11"
+       ozone_platform_wayland = true
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_platform__window_platform__window__init__properties.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_platform__window_platform__window__init__properties.h
index 33499a3eaee7..e061ebbabab8 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_platform__window_platform__window__init__properties.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_platform__window_platform__window__init__properties.h
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/ui/platform_window/platform_window_init_properties.h.orig	2020-04-08 09:41:36 UTC
+--- src/3rdparty/chromium/ui/platform_window/platform_window_init_properties.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/platform_window/platform_window_init_properties.h
-@@ -41,7 +41,7 @@ enum class PlatformWindowOpacity {
+@@ -41,7 +41,7 @@ class WorkspaceExtensionDelegate;
  
  class WorkspaceExtensionDelegate;
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
  class X11ExtensionDelegate;
  #endif
  
 @@ -82,7 +82,7 @@ struct COMPONENT_EXPORT(PLATFORM_WINDOW) PlatformWindo
  
    WorkspaceExtensionDelegate* workspace_extension_delegate = nullptr;
  
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    bool prefer_dark_theme = false;
    gfx::ImageSkia* icon = nullptr;
    base::Optional<int> background_color;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_strings_app__locale__settings.grd b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_strings_app__locale__settings.grd
index 8ade9f4e14cb..06eaef486cb8 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_strings_app__locale__settings.grd
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_strings_app__locale__settings.grd
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/ui/strings/app_locale_settings.grd.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/ui/strings/app_locale_settings.grd.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/strings/app_locale_settings.grd
-@@ -187,7 +187,7 @@
+@@ -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">
          <!-- 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/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_bubble_bubble__dialog__delegate__view.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_bubble_bubble__dialog__delegate__view.cc
index 71441eaa1b42..27783f70ed32 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_bubble_bubble__dialog__delegate__view.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_bubble_bubble__dialog__delegate__view.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/ui/views/bubble/bubble_dialog_delegate_view.cc.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/ui/views/bubble/bubble_dialog_delegate_view.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/views/bubble/bubble_dialog_delegate_view.cc
-@@ -112,7 +112,7 @@ Widget* BubbleDialogDelegateView::CreateBubble(
+@@ -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_MACOSX)
-+#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) || defined(OS_BSD)
+-#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/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_controls_label.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_controls_label.cc
index 3a32a78633b7..b09a72ecb1a2 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_controls_label.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_controls_label.cc
@@ -1,20 +1,20 @@
---- src/3rdparty/chromium/ui/views/controls/label.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/ui/views/controls/label.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/views/controls/label.cc
-@@ -651,7 +651,7 @@ bool Label::OnMousePressed(const ui::MouseEvent& event
+@@ -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
-@@ -836,7 +836,7 @@ bool Label::PasteSelectionClipboard() {
+@@ -913,7 +913,7 @@ void Label::UpdateSelectionClipboard() {
  }
  
  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::ClipboardType::kSelection)
+     ui::ScopedClipboardWriter(ui::ClipboardBuffer::kSelection)
          .WriteText(GetSelectedText());
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_controls_textfield_textfield.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_controls_textfield_textfield.cc
index 8d81947ed9d2..eccaf430ecfa 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_controls_textfield_textfield.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_controls_textfield_textfield.cc
@@ -1,73 +1,73 @@
---- src/3rdparty/chromium/ui/views/controls/textfield/textfield.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/ui/views/controls/textfield/textfield.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/views/controls/textfield/textfield.cc
-@@ -62,7 +62,7 @@
+@@ -65,7 +65,7 @@
  #include "base/win/win_util.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
-@@ -183,14 +183,14 @@ ui::TextEditCommand GetCommandForKeyEvent(const ui::Ke
+@@ -192,14 +192,14 @@ ui::TextEditCommand GetCommandForKeyEvent(const ui::Ke
  #endif
          return ui::TextEditCommand::DELETE_BACKWARD;
        }
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
        // Only erase by line break on Linux and ChromeOS.
        if (shift)
          return ui::TextEditCommand::DELETE_TO_BEGINNING_OF_LINE;
  #endif
        return ui::TextEditCommand::DELETE_WORD_BACKWARD;
      case ui::VKEY_DELETE:
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
        // Only erase by line break on Linux and ChromeOS.
        if (shift && control)
          return ui::TextEditCommand::DELETE_TO_END_OF_LINE;
-@@ -258,7 +258,7 @@ bool IsControlKeyModifier(int flags) {
+@@ -267,7 +267,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
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
    return flags & ui::EF_CONTROL_DOWN;
  #else
    return false;
-@@ -691,7 +691,7 @@ bool Textfield::OnMousePressed(const ui::MouseEvent& e
+@@ -758,7 +758,7 @@ bool Textfield::OnMousePressed(const ui::MouseEvent& e
  #endif
    }
  
 -#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
 +#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
    if (!handled && !had_focus && event.IsOnlyMiddleMouseButton())
-     RequestFocusWithPointer(ui::EventPointerType::POINTER_TYPE_MOUSE);
+     RequestFocusWithPointer(ui::EventPointerType::kMouse);
  #endif
-@@ -737,7 +737,7 @@ bool Textfield::OnKeyPressed(const ui::KeyEvent& event
+@@ -805,7 +805,7 @@ bool Textfield::OnKeyPressed(const ui::KeyEvent& event
    if (!textfield)
      return handled;
  
 -#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
 +#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
    ui::TextEditKeyBindingsDelegateAuraLinux* delegate =
        ui::GetTextEditKeyBindingsDelegate();
    std::vector<ui::TextEditCommandAuraLinux> commands;
-@@ -886,7 +886,7 @@ void Textfield::AboutToRequestFocusFromTabTraversal(bo
+@@ -957,7 +957,7 @@ bool Textfield::SkipDefaultKeyEventProcessing(const ui
  }
  
  bool Textfield::SkipDefaultKeyEventProcessing(const ui::KeyEvent& event) {
 -#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
 +#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
    // Skip any accelerator handling that conflicts with custom keybindings.
    ui::TextEditKeyBindingsDelegateAuraLinux* delegate =
        ui::GetTextEditKeyBindingsDelegate();
-@@ -2146,7 +2146,7 @@ bool Textfield::PasteSelectionClipboard() {
+@@ -2241,7 +2241,7 @@ void Textfield::UpdateSelectionClipboard() {
  }
  
  void Textfield::UpdateSelectionClipboard() {
 -#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
 +#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
    if (text_input_type_ != ui::TEXT_INPUT_TYPE_PASSWORD) {
      ui::ScopedClipboardWriter(ui::ClipboardBuffer::kSelection)
          .WriteText(GetSelectedText());
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_corewm_tooltip__aura.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_corewm_tooltip__aura.cc
index d1fb3fde4e08..a7895d6c01f8 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_corewm_tooltip__aura.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_corewm_tooltip__aura.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/ui/views/corewm/tooltip_aura.cc.orig	2019-11-27 21:12:25 UTC
+--- src/3rdparty/chromium/ui/views/corewm/tooltip_aura.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/views/corewm/tooltip_aura.cc
-@@ -41,7 +41,7 @@ constexpr int kVerticalPaddingBottom = 5;
+@@ -46,7 +46,7 @@ bool CanUseTranslucentTooltipWidget() {
  
  // 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/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_examples_widget__example.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_examples_widget__example.cc
index c451b062e321..a63cb33a4504 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_examples_widget__example.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_examples_widget__example.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/ui/views/examples/widget_example.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/ui/views/examples/widget_example.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/views/examples/widget_example.cc
-@@ -79,7 +79,7 @@ void WidgetExample::CreateExampleView(View* container)
-   BuildButton(container, "Popup widget", POPUP);
-   BuildButton(container, "Dialog widget", DIALOG);
-   BuildButton(container, "Modal Dialog", MODAL_DIALOG);
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
+@@ -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, "Child widget", CHILD);
- #endif
+   BuildButton(container, GetStringUTF16(IDS_WIDGET_CHILD_WIDGET_BUTTON_LABEL),
+               CHILD);
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_focus_focus__manager.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_focus_focus__manager.cc
new file mode 100644
index 000000000000..c179e5f0e05b
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_focus_focus__manager.cc
@@ -0,0 +1,20 @@
+--- src/3rdparty/chromium/ui/views/focus/focus_manager.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/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/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_selection__controller.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_selection__controller.cc
index 0a0f7c8290e9..f4cb5ff72772 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_selection__controller.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_selection__controller.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/ui/views/selection_controller.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/ui/views/selection_controller.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/views/selection_controller.cc
-@@ -20,7 +20,7 @@ SelectionController::SelectionController(SelectionCont
+@@ -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/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_style_platform__style.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_style_platform__style.cc
index 9ecf0352cfe4..06be4164a006 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_style_platform__style.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_style_platform__style.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/ui/views/style/platform_style.cc.orig	2020-04-08 09:41:36 UTC
+--- src/3rdparty/chromium/ui/views/style/platform_style.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/views/style/platform_style.cc
-@@ -74,7 +74,7 @@ gfx::Range PlatformStyle::RangeToDeleteBackwards(const
+@@ -75,7 +75,7 @@ gfx::Range PlatformStyle::RangeToDeleteBackwards(const
+ #endif  // OS_APPLE
  
- #endif  // OS_MACOSX
- 
--#if !BUILDFLAG(ENABLE_DESKTOP_AURA) || !defined(OS_LINUX)
-+#if !BUILDFLAG(ENABLE_DESKTOP_AURA) || !(defined(OS_LINUX) || defined(OS_BSD))
+ #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/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_views__delegate.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_views__delegate.cc
index eee90b00f726..8e6aaaaa26da 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_views__delegate.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_views__delegate.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/ui/views/views_delegate.cc.orig	2020-04-08 09:41:36 UTC
+--- src/3rdparty/chromium/ui/views/views_delegate.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/views/views_delegate.cc
-@@ -85,7 +85,7 @@ HICON ViewsDelegate::GetSmallWindowIcon() const {
- bool ViewsDelegate::IsWindowInMetro(gfx::NativeWindow window) const {
+@@ -86,7 +86,7 @@ bool ViewsDelegate::IsWindowInMetro(gfx::NativeWindow 
    return false;
  }
--#elif defined(OS_LINUX) && BUILDFLAG(ENABLE_DESKTOP_AURA)
-+#elif (defined(OS_LINUX) || defined(OS_BSD)) && BUILDFLAG(ENABLE_DESKTOP_AURA)
+ #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/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_views__delegate.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_views__delegate.h
index acb86f06a0d4..59131b00674f 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_views__delegate.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_views__delegate.h
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/ui/views/views_delegate.h.orig	2020-04-08 09:41:36 UTC
+--- src/3rdparty/chromium/ui/views/views_delegate.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/views/views_delegate.h
-@@ -131,7 +131,7 @@ class VIEWS_EXPORT ViewsDelegate {
-   // Returns true if the window passed in is in the Windows 8 metro
+@@ -134,7 +134,7 @@ class VIEWS_EXPORT ViewsDelegate {
    // environment.
    virtual bool IsWindowInMetro(gfx::NativeWindow window) const;
--#elif defined(OS_LINUX) && BUILDFLAG(ENABLE_DESKTOP_AURA)
-+#elif (defined(OS_LINUX) || defined(OS_BSD)) && BUILDFLAG(ENABLE_DESKTOP_AURA)
+ #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/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_widget_desktop__aura_desktop__screen__ozone.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_widget_desktop__aura_desktop__screen__ozone.cc
new file mode 100644
index 000000000000..d4594ecc699a
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_widget_desktop__aura_desktop__screen__ozone.cc
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/ui/views/widget/desktop_aura/desktop_screen_ozone.cc.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/ui/views/widget/desktop_aura/desktop_screen_ozone.cc
+@@ -26,7 +26,7 @@ gfx::NativeWindow DesktopScreenOzone::GetNativeWindowF
+ // 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
+ // screen to use based on IsUsingOzonePlatform feature flag.
+-#if !defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if !defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ display::Screen* CreateDesktopScreen() {
+   return new DesktopScreenOzone();
+ }
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_widget_desktop__aura_desktop__window__tree__host__platform.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_widget_desktop__aura_desktop__window__tree__host__platform.cc
index 7e3f6c926e5b..814dff097a66 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_widget_desktop__aura_desktop__window__tree__host__platform.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_widget_desktop__aura_desktop__window__tree__host__platform.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc.orig	2020-03-16 14:04:24 UTC
+--- src/3rdparty/chromium/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc
-@@ -732,7 +732,7 @@ void DesktopWindowTreeHostPlatform::AddAdditionalInitP
+@@ -794,7 +794,7 @@ void DesktopWindowTreeHostPlatform::AddAdditionalInitP
  // DesktopWindowTreeHost:
  
  // Linux subclasses this host and adds some Linux specific bits.
--#if !defined(OS_LINUX)
-+#if !defined(OS_LINUX) && !defined(OS_BSD)
+-#if !defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if !defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_BSD)
  // static
  DesktopWindowTreeHost* DesktopWindowTreeHost::Create(
      internal::NativeWidgetDelegate* native_widget_delegate,
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_widget_native__widget__aura.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_widget_native__widget__aura.cc
index ebd2c14397fd..d0291b219411 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_widget_native__widget__aura.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_widget_native__widget__aura.cc
@@ -1,27 +1,37 @@
---- src/3rdparty/chromium/ui/views/widget/native_widget_aura.cc.orig	2020-04-08 09:41:36 UTC
+--- src/3rdparty/chromium/ui/views/widget/native_widget_aura.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/views/widget/native_widget_aura.cc
-@@ -64,7 +64,7 @@
- #include "ui/views/widget/desktop_aura/desktop_window_tree_host_win.h"
+@@ -65,7 +65,7 @@
  #endif
  
--#if BUILDFLAG(ENABLE_DESKTOP_AURA) && defined(OS_LINUX)
-+#if BUILDFLAG(ENABLE_DESKTOP_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
+ #if BUILDFLAG(ENABLE_DESKTOP_AURA) && \
+-    (defined(OS_LINUX) || defined(OS_CHROMEOS))
++    (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD))
  #include "ui/views/linux_ui/linux_ui.h"
  #include "ui/views/widget/desktop_aura/desktop_window_tree_host_linux.h"
  #endif
-@@ -1095,13 +1095,13 @@ void Widget::CloseAllSecondaryWidgets() {
-   EnumThreadWindows(GetCurrentThreadId(), WindowCallbackProc, 0);
+@@ -1075,7 +1075,7 @@ namespace {
+ 
+ namespace {
+ #if BUILDFLAG(ENABLE_DESKTOP_AURA) && \
+-    (defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS))
++    (defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD))
+ void CloseWindow(aura::Window* window) {
+   if (window) {
+     Widget* widget = Widget::GetWidgetForNativeView(window);
+@@ -1106,14 +1106,14 @@ void Widget::CloseAllSecondaryWidgets() {
  #endif
  
--#if BUILDFLAG(ENABLE_DESKTOP_AURA) && defined(OS_LINUX)
-+#if BUILDFLAG(ENABLE_DESKTOP_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
+ #if BUILDFLAG(ENABLE_DESKTOP_AURA) && \
+-    (defined(OS_LINUX) || defined(OS_CHROMEOS))
++    (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD))
    DesktopWindowTreeHostLinux::CleanUpWindowList(CloseWindow);
  #endif
  }
  
  const ui::NativeTheme* Widget::GetNativeTheme() const {
--#if BUILDFLAG(ENABLE_DESKTOP_AURA) && defined(OS_LINUX)
-+#if BUILDFLAG(ENABLE_DESKTOP_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
+ #if BUILDFLAG(ENABLE_DESKTOP_AURA) && \
+-    (defined(OS_LINUX) || defined(OS_CHROMEOS))
++    (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD))
    const LinuxUI* linux_ui = LinuxUI::instance();
    if (linux_ui) {
      ui::NativeTheme* native_theme =
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_window_custom__frame__view.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_window_custom__frame__view.cc
index 887245427563..d1b004bfe583 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_window_custom__frame__view.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_window_custom__frame__view.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/ui/views/window/custom_frame_view.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/ui/views/window/custom_frame_view.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/views/window/custom_frame_view.cc
-@@ -301,7 +301,7 @@ int CustomFrameView::NonClientTopBorderHeight() const 
+@@ -261,7 +261,7 @@ int CustomFrameView::CaptionButtonY() 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/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_window_dialog__delegate.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_window_dialog__delegate.cc
index 2fe1dc02974f..9a3ec54fb92b 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_window_dialog__delegate.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_window_dialog__delegate.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/ui/views/window/dialog_delegate.cc.orig	2020-04-08 09:41:36 UTC
+--- src/3rdparty/chromium/ui/views/window/dialog_delegate.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/views/window/dialog_delegate.cc
-@@ -59,7 +59,7 @@ Widget* DialogDelegate::CreateDialogWidget(WidgetDeleg
+@@ -71,7 +71,7 @@ bool DialogDelegate::CanSupportCustomFrame(gfx::Native
  
  // static
  bool DialogDelegate::CanSupportCustomFrame(gfx::NativeView parent) {
--#if defined(OS_LINUX) && BUILDFLAG(ENABLE_DESKTOP_AURA)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && BUILDFLAG(ENABLE_DESKTOP_AURA)
+-#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && \
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && \
+     BUILDFLAG(ENABLE_DESKTOP_AURA)
    // The new style doesn't support unparented dialogs on Linux desktop.
    return parent != nullptr;
- #elif defined(OS_WIN)
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_window_frame__background.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_window_frame__background.cc
index 5360a93b4abd..bee32b98318d 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_window_frame__background.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_views_window_frame__background.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/ui/views/window/frame_background.cc.orig	2020-04-08 09:41:36 UTC
+--- src/3rdparty/chromium/ui/views/window/frame_background.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/ui/views/window/frame_background.cc
-@@ -107,7 +107,7 @@ void FrameBackground::PaintMaximized(gfx::Canvas* canv
+@@ -99,7 +99,7 @@ void FrameBackground::PaintMaximized(gfx::Canvas* canv
                                       const View* view) const {
  // Fill the top with the frame color first so we have a constant background
  // for areas not covered by the theme image.
--#if defined(OS_LINUX) && BUILDFLAG(ENABLE_DESKTOP_AURA)
-+#if (defined(OS_LINUX) || defined(OS_BSD)) && BUILDFLAG(ENABLE_DESKTOP_AURA)
+-#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && \
++#if (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)) && \
+     BUILDFLAG(ENABLE_DESKTOP_AURA)
    auto* native_theme = view->GetNativeTheme();
    ui::NativeTheme::ExtraParams params;
-   params.frame_top_area.use_custom_frame = use_custom_frame_;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_webui_resources_js_icon.js b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_webui_resources_js_icon.js
deleted file mode 100644
index 98b334e87ec7..000000000000
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_webui_resources_js_icon.js
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/3rdparty/chromium/ui/webui/resources/js/icon.js.orig	2018-11-13 18:25:11 UTC
-+++ src/3rdparty/chromium/ui/webui/resources/js/icon.js
-@@ -14,7 +14,7 @@ cr.define('cr.icon', function() {
-       // supports SCALE_FACTOR_100P on all non-iOS platforms.
-       supportedScaleFactors.push(1);
-     }
--    if (cr.isMac || cr.isChromeOS || cr.isWindows || cr.isLinux) {
-+    if (cr.isMac || cr.isChromeOS || cr.isWindows || cr.isLinux || cr.isBSD) {
-       // All desktop platforms support zooming which also updates the renderer's
-       // device scale factors (a.k.a devicePixelRatio), and these platforms have
-       // high DPI assets for 2x.  Let the renderer pick the closest image for
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_BUILD.gn b/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_BUILD.gn
index 089dee31ca1c..fac64004a67e 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_BUILD.gn
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_BUILD.gn
@@ -1,40 +1,27 @@
---- src/3rdparty/chromium/v8/BUILD.gn.orig	2019-05-23 14:39:34.000000000 +0200
-+++ src/3rdparty/chromium/v8/BUILD.gn	2019-10-27 22:44:17.280181000 +0100
-@@ -3006,7 +3006,6 @@
-   # to implement atomic memory access
-   if (v8_current_cpu == "mips" || v8_current_cpu == "mipsel" ||
-       v8_current_cpu == "mips64" || v8_current_cpu == "mips64el" ||
--      v8_current_cpu == "ppc" || v8_current_cpu == "ppc64" ||
-       v8_current_cpu == "s390" || v8_current_cpu == "s390x") {
-     libs = [ "atomic" ]
-   }
-@@ -3169,7 +3168,7 @@
+--- src/3rdparty/chromium/v8/BUILD.gn.orig	2021-12-15 16:12:54 UTC
++++ src/3rdparty/chromium/v8/BUILD.gn
+@@ -4116,9 +4116,15 @@ v8_component("v8_libbase") {
      }
    }
  
--  if (is_linux) {
-+  if (is_linux && !is_bsd) {
+-  if (is_linux || is_chromeos) {
++  if (is_bsd) {
      sources += [
        "src/base/debug/stack_trace_posix.cc",
-       "src/base/platform/platform-linux.cc",
-@@ -3189,6 +3188,12 @@
-       "dl",
-       "rt",
-     ]
-+  } else if (is_bsd) {
-+    sources += [
-+      "src/base/debug/stack_trace_posix.cc",
 +      "src/base/platform/platform-freebsd.cc",
 +    ]
 +    libs = [ "rt", "execinfo" ]
-   } else if (is_android) {
-     if (current_toolchain == host_toolchain) {
-       libs = [
-@@ -3393,6 +3398,7 @@
-       "src/snapshot/embedded-file-writer.h",
-       "src/snapshot/mksnapshot.cc",
++  } else if (is_linux || is_chromeos) {
++    sources += [
++      "src/base/debug/stack_trace_posix.cc",
+       "src/base/platform/platform-linux.cc",
+     ]
+ 
+@@ -4524,6 +4530,7 @@ if (current_toolchain == v8_generator_toolchain) {
+       "src/interpreter/bytecodes.cc",
+       "src/interpreter/bytecodes.h",
      ]
 +    libs = ["execinfo"]
  
      configs = [ ":internal_config" ]
  
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_include_v8config.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_include_v8config.h
index 13a34f3c8cae..0f5d7a0f762c 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_include_v8config.h
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_include_v8config.h
@@ -1,21 +1,21 @@
---- src/3rdparty/chromium/v8/include/v8config.h.orig	2020-04-08 09:41:36 UTC
+--- src/3rdparty/chromium/v8/include/v8config.h.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/v8/include/v8config.h
-@@ -273,7 +273,18 @@
+@@ -276,7 +276,18 @@
  # define V8_HAS_ATTRIBUTE_WARN_UNUSED_RESULT \
      (__has_attribute(warn_unused_result))
  
 +// Work around Clang bug present in 9.0.1, at least.
 +//
 +// Clang stores alignment as a 32-bit unsigned integer, but V8 only uses
 +// V8_ASSUME_ALIGNED() for a 4GB (2^32) alignment
 +// (kPtrComprIsolateRootAlignment).  As such, the alignment overflows and
 +// becomes zero, triggering an internal Clang assertion that alignment must not
 +// be zero.
 +#if 0
  # define V8_HAS_BUILTIN_ASSUME_ALIGNED (__has_builtin(__builtin_assume_aligned))
 +#else
 +# define V8_HAS_BUILTIN_ASSUME_ALIGNED 0
 +#endif
  # define V8_HAS_BUILTIN_BSWAP16 (__has_builtin(__builtin_bswap16))
  # define V8_HAS_BUILTIN_BSWAP32 (__has_builtin(__builtin_bswap32))
  # define V8_HAS_BUILTIN_BSWAP64 (__has_builtin(__builtin_bswap64))
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_api_api.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_api_api.cc
index 0b7a73a388f7..68cb6075e396 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_api_api.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_api_api.cc
@@ -1,11 +1,11 @@
---- src/3rdparty/chromium/v8/src/api/api.cc.orig	2020-04-08 09:41:36 UTC
+--- src/3rdparty/chromium/v8/src/api/api.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/v8/src/api/api.cc
-@@ -5653,7 +5653,7 @@ bool v8::V8::Initialize() {
+@@ -5760,7 +5760,7 @@ bool v8::V8::Initialize(const int build_config) {
    return true;
  }
  
 -#if V8_OS_LINUX || V8_OS_MACOSX
 +#if V8_OS_LINUX || V8_OS_MACOSX || V8_OS_OPENBSD || V8_OS_FREEBSD
  bool TryHandleWebAssemblyTrapPosix(int sig_code, siginfo_t* info,
                                     void* context) {
  #if V8_TARGET_ARCH_X64 && !V8_OS_ANDROID
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_base_cpu.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_base_cpu.cc
index 36b09a2ec5cf..2c3df1c0e163 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_base_cpu.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_base_cpu.cc
@@ -1,18 +1,18 @@
---- src/3rdparty/chromium/v8/src/base/cpu.cc.orig	2018-11-13 18:25:11 UTC
+--- src/3rdparty/chromium/v8/src/base/cpu.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/v8/src/base/cpu.cc
-@@ -424,6 +424,7 @@ CPU::CPU()
+@@ -534,6 +534,7 @@ CPU::CPU()
  
  #if V8_OS_LINUX
  
 +#if V8_OS_LINUX
    CPUInfo cpu_info;
  
    // Extract implementor from the "CPU implementer" field.
-@@ -457,6 +458,7 @@ CPU::CPU()
+@@ -567,6 +568,7 @@ CPU::CPU()
      }
      delete[] part;
    }
 +#endif
  
    // Extract architecture from the "CPU Architecture" field.
    // The list is well-known, unlike the the output of
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_base_platform_platform-freebsd.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_base_platform_platform-freebsd.cc
index 794b571905e5..269553868161 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_base_platform_platform-freebsd.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_base_platform_platform-freebsd.cc
@@ -1,21 +1,13 @@
---- src/3rdparty/chromium/v8/src/base/platform/platform-freebsd.cc.orig	2020-11-07 01:22:36 UTC
+--- src/3rdparty/chromium/v8/src/base/platform/platform-freebsd.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/v8/src/base/platform/platform-freebsd.cc
-@@ -6,6 +6,7 @@
- // parts, the implementation is in platform-posix.cc.
- 
- #include <pthread.h>
-+#include <pthread_np.h>
- #include <semaphore.h>
- #include <signal.h>
- #include <stdlib.h>
-@@ -81,8 +82,8 @@ std::vector<OS::SharedLibraryAddress> OS::GetSharedLib
+@@ -82,8 +82,8 @@ std::vector<OS::SharedLibraryAddress> OS::GetSharedLib
              lib_name = std::string(path);
            }
            result.push_back(SharedLibraryAddress(
 -              lib_name, reinterpret_cast<uintptr_t>(map->kve_start),
 -              reinterpret_cast<uintptr_t>(map->kve_end)));
 +              lib_name, static_cast<uintptr_t>(map->kve_start),
 +              static_cast<uintptr_t>(map->kve_end)));
          }
  
          start += ssize;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_base_platform_platform-posix.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_base_platform_platform-posix.cc
index b977eae08457..41ec25f1a7c8 100644
--- a/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_base_platform_platform-posix.cc
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_base_platform_platform-posix.cc
@@ -1,24 +1,24 @@
---- src/3rdparty/chromium/v8/src/base/platform/platform-posix.cc.orig	2019-05-23 12:39:34 UTC
+--- src/3rdparty/chromium/v8/src/base/platform/platform-posix.cc.orig	2021-12-15 16:12:54 UTC
 +++ src/3rdparty/chromium/v8/src/base/platform/platform-posix.cc
-@@ -376,7 +376,7 @@ bool OS::DiscardSystemPages(void* address, size_t size
+@@ -466,7 +466,7 @@ bool OS::HasLazyCommits() {
  
  // static
  bool OS::HasLazyCommits() {
 -#if V8_OS_AIX || V8_OS_LINUX || V8_OS_MACOSX
 +#if V8_OS_AIX || V8_OS_LINUX || V8_OS_MACOSX || V8_OS_FREEBSD
    return true;
  #else
    // TODO(bbudge) Return true for all POSIX platforms.
-@@ -501,6 +501,12 @@ int OS::GetCurrentThreadId() {
+@@ -597,6 +597,12 @@ int OS::GetCurrentThreadId() {
    return static_cast<int>(syscall(__NR_gettid));
  #elif V8_OS_ANDROID
    return static_cast<int>(gettid());
 +#elif V8_OS_DRAGONFLYBSD || defined(__DragonFly__)
 +  return static_cast<int>(lwp_gettid());
 +#elif V8_OS_FREEBSD
 +  return static_cast<int>(pthread_getthreadid_np());
 +#elif V8_OS_NETBSD
 +  return static_cast<int>(_lwp_self());
  #elif V8_OS_AIX
    return static_cast<int>(thread_self());
  #elif V8_OS_FUCHSIA
diff --git a/www/qt5-webengine/files/patch-src_core_core__module.pro b/www/qt5-webengine/files/patch-src_core_core__module.pro
index b51904dfacda..3c6330bb2323 100644
--- a/www/qt5-webengine/files/patch-src_core_core__module.pro
+++ b/www/qt5-webengine/files/patch-src_core_core__module.pro
@@ -1,11 +1,11 @@
---- src/core/core_module.pro.orig	2020-11-07 01:22:36 UTC
+--- src/core/core_module.pro.orig	2021-12-15 16:12:54 UTC
 +++ src/core/core_module.pro
-@@ -41,7 +41,7 @@ QMAKE_INFO_PLIST = Info_mac.plist
+@@ -41,7 +41,7 @@ CONFIG -= bsymbolic_functions
  # and doesn't let Chromium get access to libc symbols through dlsym.
  CONFIG -= bsymbolic_functions
  
--linux:qtConfig(separate_debug_info): QMAKE_POST_LINK="cd $(DESTDIR) && $(STRIP) --strip-unneeded $(TARGET)"
-+unix:qtConfig(separate_debug_info): QMAKE_POST_LINK="cd $(DESTDIR) && $(STRIP) --strip-unneeded $(TARGET)"
- 
- REPACK_DIR = $$OUT_PWD/$$getConfigDir()
- 
+-linux {
++unix {
+     !ccache:!use_gold_linker:!use_lld_linker {
+         QMAKE_LINK="ulimit -n 4096 && $$QMAKE_LINK"
+         QMAKE_LINK_SHLIB="ulimit -n 4096 && $$QMAKE_LINK_SHLIB"
diff --git a/www/qt5-webengine/files/sndio_input.cc b/www/qt5-webengine/files/sndio_input.cc
index 6c7bc8b8025b..5aed9a03b214 100644
--- a/www/qt5-webengine/files/sndio_input.cc
+++ b/www/qt5-webengine/files/sndio_input.cc
@@ -1,201 +1,201 @@
 // Copyright 2013 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.
 
 #include "base/bind.h"
 #include "base/logging.h"
 #include "base/macros.h"
-#include "base/message_loop/message_loop.h"
+#include "base/message_loop/message_pump.h"
 #include "media/base/audio_timestamp_helper.h"
 #include "media/audio/openbsd/audio_manager_openbsd.h"
 #include "media/audio/audio_manager.h"
 #include "media/audio/sndio/sndio_input.h"
 
 namespace media {
 
 static const SampleFormat kSampleFormat = kSampleFormatS16;
 
 void SndioAudioInputStream::OnMoveCallback(void *arg, int delta)
 {
   SndioAudioInputStream* self = static_cast<SndioAudioInputStream*>(arg);
 
   self->hw_delay += delta;
 }
 
 void *SndioAudioInputStream::ThreadEntry(void *arg) {
   SndioAudioInputStream* self = static_cast<SndioAudioInputStream*>(arg);
 
   self->ThreadLoop();
   return NULL;
 }
 
 SndioAudioInputStream::SndioAudioInputStream(AudioManagerBase* manager,
                                              const std::string& device_name,
                                              const AudioParameters& params)
     : manager(manager),
       params(params),
       audio_bus(AudioBus::Create(params)),
       state(kClosed) {
 }
 
 SndioAudioInputStream::~SndioAudioInputStream() {
   if (state != kClosed)
     Close();
 }
 
 bool SndioAudioInputStream::Open() {
   struct sio_par par;
   int sig;
 
   if (state != kClosed)
     return false;
 
   if (params.format() != AudioParameters::AUDIO_PCM_LINEAR &&
       params.format() != AudioParameters::AUDIO_PCM_LOW_LATENCY) {
     LOG(WARNING) << "Unsupported audio format.";
     return false;
   }
 
   sio_initpar(&par);
   par.rate = params.sample_rate();
   par.rchan = params.channels();
   par.bits = SampleFormatToBitsPerChannel(kSampleFormat);
   par.bps = par.bits / 8;
   par.sig = sig = par.bits != 8 ? 1 : 0;
   par.le = SIO_LE_NATIVE;
   par.appbufsz = params.frames_per_buffer();
 
   hdl = sio_open(SIO_DEVANY, SIO_REC, 0);
 
   if (hdl == NULL) {
     LOG(ERROR) << "Couldn't open audio device.";
     return false;
   }
 
   if (!sio_setpar(hdl, &par) || !sio_getpar(hdl, &par)) {
     LOG(ERROR) << "Couldn't set audio parameters.";
     goto bad_close;
   }
 
   if (par.rate  != (unsigned int)params.sample_rate() ||
       par.rchan != (unsigned int)params.channels() ||
       par.bits  != (unsigned int)SampleFormatToBitsPerChannel(kSampleFormat) ||
       par.sig   != (unsigned int)sig ||
       (par.bps > 1 && par.le != SIO_LE_NATIVE) ||
       (par.bits != par.bps * 8)) {
     LOG(ERROR) << "Unsupported audio parameters.";
     goto bad_close;
   }
   state = kStopped;
   buffer = new char[audio_bus->frames() * params.GetBytesPerFrame(kSampleFormat)];
   sio_onmove(hdl, &OnMoveCallback, this);
   return true;
 bad_close:
   sio_close(hdl);
   return false;
 }
 
 void SndioAudioInputStream::Start(AudioInputCallback* cb) {
 
   StartAgc();
 
   state = kRunning;
   hw_delay = 0;
   callback = cb;
   sio_start(hdl);
   if (pthread_create(&thread, NULL, &ThreadEntry, this) != 0) {
     LOG(ERROR) << "Failed to create real-time thread for recording.";
     sio_stop(hdl);
     state = kStopped;
   }
 }
 
 void SndioAudioInputStream::Stop() {
 
   if (state == kStopped)
     return;
 
   state = kStopWait;
   pthread_join(thread, NULL);
   sio_stop(hdl);
   state = kStopped;
 
   StopAgc();
 }
 
 void SndioAudioInputStream::Close() {
 
   if (state == kClosed)
     return;
 
   if (state == kRunning)
     Stop();
 
   state = kClosed;
   delete [] buffer;
   sio_close(hdl);
 
   manager->ReleaseInputStream(this);
 }
 
 double SndioAudioInputStream::GetMaxVolume() {
   // Not supported
   return 0.0;
 }
 
 void SndioAudioInputStream::SetVolume(double volume) {
   // Not supported. Do nothing.
 }
 
 double SndioAudioInputStream::GetVolume() {
   // Not supported.
   return 0.0;
 }
 
 bool SndioAudioInputStream::IsMuted() {
   // Not supported.
   return false;
 }
 
 void SndioAudioInputStream::SetOutputDeviceForAec(
     const std::string& output_device_id) {
   // Not supported.
 }
 
 void SndioAudioInputStream::ThreadLoop(void) {
   size_t todo, n;
   char *data;
   unsigned int nframes;
   double normalized_volume = 0.0;
 
   nframes = audio_bus->frames();
 
   while (state == kRunning && !sio_eof(hdl)) {
 
     GetAgcVolume(&normalized_volume);
 
     // read one block
     todo = nframes * params.GetBytesPerFrame(kSampleFormat);
     data = buffer;
     while (todo > 0) {
       n = sio_read(hdl, data, todo);
       if (n == 0)
         return;	// unrecoverable I/O error
       todo -= n;
       data += n;
     }
     hw_delay -= nframes;
 
     // convert frames count to TimeDelta
     const base::TimeDelta delay = AudioTimestampHelper::FramesToTime(hw_delay,
       params.sample_rate());
 
     // push into bus
     audio_bus->FromInterleaved(buffer, nframes, SampleFormatToBytesPerChannel(kSampleFormat));
 
     // invoke callback
     callback->OnData(audio_bus.get(), base::TimeTicks::Now() - delay, 1.);
   }
 }
 
 }  // namespace media