summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephan Hartmann <stha09@googlemail.com>2019-10-20 20:12:55 +0200
committerMike Gilbert <floppym@gentoo.org>2019-10-25 10:29:49 -0400
commit4ba68b536dff50305bf8bdf2f66b2081567c0738 (patch)
tree6115eff851117c504505837dc0657ae01ccd6dd6 /www-client/chromium
parentmail-client/neomutt: Remove reserved underscore (diff)
downloadgentoo-4ba68b536dff50305bf8bdf2f66b2081567c0738.tar.gz
gentoo-4ba68b536dff50305bf8bdf2f66b2081567c0738.tar.bz2
gentoo-4ba68b536dff50305bf8bdf2f66b2081567c0738.zip
www-client/chromium: dev channel bump to 79.0.3941.4
Package-Manager: Portage-2.3.76, Repoman-2.3.16 Signed-off-by: Stephan Hartmann <stha09@googlemail.com> Signed-off-by: Mike Gilbert <floppym@gentoo.org>
Diffstat (limited to 'www-client/chromium')
-rw-r--r--www-client/chromium/Manifest1
-rw-r--r--www-client/chromium/chromium-79.0.3941.4.ebuild740
-rw-r--r--www-client/chromium/files/chromium-79-gcc-alignas.patch108
-rw-r--r--www-client/chromium/files/chromium-79-gcc-ambiguous-nodestructor.patch13
-rw-r--r--www-client/chromium/files/chromium-79-gcc-permissive.patch93
-rw-r--r--www-client/chromium/files/chromium-79-include.patch70
-rw-r--r--www-client/chromium/files/chromium-79-swiftshader-linux.patch180
-rw-r--r--www-client/chromium/files/chromium-79-system-hb.patch19
8 files changed, 1224 insertions, 0 deletions
diff --git a/www-client/chromium/Manifest b/www-client/chromium/Manifest
index cdccc6abfbe6..1e46a565387c 100644
--- a/www-client/chromium/Manifest
+++ b/www-client/chromium/Manifest
@@ -1,3 +1,4 @@
DIST chromium-77.0.3865.120.tar.xz 729636120 BLAKE2B 7ff2467b5dd421c3962dd86503975fe042ced4a44e9d3705106ee9c9a7ceaa94c38fea2aefe4913bfe4af40775cb37b175d9a6c70b67d807c227f7e363ba5783 SHA512 4c72c9e9cd9a5d7f89e33c52d117018418ce0f5d23a57341b26ce47c8f90fa55f52a0c976b6959026dc273d5b37aa57306253a9b533172cd133a815edc7bccb4
DIST chromium-78-revert-noexcept-r1.patch.gz 12094 BLAKE2B 1fd0c939af773ed398c9ab14fa80b042b4237cabdbcb06425e4d1c72200ec49c3c1383cfc95013cce4df411b0a2397b79030d41a0379ae80a0c60bae1fbb5ffa SHA512 dcb62b82b34d5d6982762cacfe3ab7d3538d908b3befe7666f5d70d98ba4f979b5bf056e5c5343ed76aa744a643318fc5a75ddedfcb1b7de3e7c28eb2587439f
DIST chromium-78.0.3904.70.tar.xz 742787108 BLAKE2B 623a0359f461672d8d6c97b4703f5b50c6ac423350ba96b7f37582be38d9cc66674e441b506405bc5f136df19df886036ef5abae4b8c2e4e953ec296e2a25bb4 SHA512 95d926ea92a0e744284a4c5fca619e3a067dd0fdfaa7c05b5a069d2a8d1159bf849335e21e5803bd28175c1994bd4ff15337ad0a3063445fab74eef113275545
+DIST chromium-79.0.3941.4.tar.xz 772100680 BLAKE2B 2a510529ae9a58c2c831bd293eb1a9ea276422da6f49741be208bcf8c17eafa0e47c0adf8e3f1148f3da821188315e9d6c7f2de1c44dd844f5d481be17b35ef7 SHA512 5847f7c647737ea96c27f859e5b763100c4d0ecff83eb33d81d144e3be16a5a709290a66fa6754b8a38be68c850dee4be0abc2419f5a50e0cf22bc37a0563c80
diff --git a/www-client/chromium/chromium-79.0.3941.4.ebuild b/www-client/chromium/chromium-79.0.3941.4.ebuild
new file mode 100644
index 000000000000..1cb2a50a73e4
--- /dev/null
+++ b/www-client/chromium/chromium-79.0.3941.4.ebuild
@@ -0,0 +1,740 @@
+# Copyright 2009-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+PYTHON_COMPAT=( python2_7 )
+
+CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he
+ hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr
+ sv sw ta te th tr uk vi zh-CN zh-TW"
+
+inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils
+
+DESCRIPTION="Open-source version of Google Chrome web browser"
+HOMEPAGE="http://chromium.org/"
+SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="+closure-compile component-build cups cpu_flags_arm_neon gnome-keyring +hangouts jumbo-build kerberos pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc widevine"
+RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )"
+REQUIRED_USE="component-build? ( !suid )"
+
+COMMON_DEPEND="
+ >=app-accessibility/at-spi2-atk-2.26:2
+ app-arch/bzip2:=
+ cups? ( >=net-print/cups-1.3.11:= )
+ >=dev-libs/atk-2.26
+ dev-libs/expat:=
+ dev-libs/glib:2
+ system-icu? ( >=dev-libs/icu-65:= )
+ >=dev-libs/libxml2-2.9.4-r3:=[icu]
+ dev-libs/libxslt:=
+ dev-libs/nspr:=
+ >=dev-libs/nss-3.26:=
+ >=dev-libs/re2-0.2016.11.01:=
+ gnome-keyring? ( >=gnome-base/libgnome-keyring-3.12:= )
+ >=media-libs/alsa-lib-1.0.19:=
+ media-libs/fontconfig:=
+ media-libs/freetype:=
+ >=media-libs/harfbuzz-2.4.0:0=[icu(-)]
+ media-libs/libjpeg-turbo:=
+ media-libs/libpng:=
+ system-libvpx? ( media-libs/libvpx:=[postproc,svc] )
+ >=media-libs/openh264-1.6.0:=
+ pulseaudio? ( media-sound/pulseaudio:= )
+ system-ffmpeg? (
+ >=media-video/ffmpeg-4:=
+ || (
+ media-video/ffmpeg[-samba]
+ >=net-fs/samba-4.5.10-r1[-debug(-)]
+ )
+ !=net-fs/samba-4.5.12-r0
+ media-libs/opus:=
+ )
+ sys-apps/dbus:=
+ sys-apps/pciutils:=
+ virtual/udev
+ x11-libs/cairo:=
+ x11-libs/gdk-pixbuf:2
+ x11-libs/gtk+:3[X]
+ x11-libs/libX11:=
+ x11-libs/libXcomposite:=
+ x11-libs/libXcursor:=
+ x11-libs/libXdamage:=
+ x11-libs/libXext:=
+ x11-libs/libXfixes:=
+ >=x11-libs/libXi-1.6.0:=
+ x11-libs/libXrandr:=
+ x11-libs/libXrender:=
+ x11-libs/libXScrnSaver:=
+ x11-libs/libXtst:=
+ x11-libs/pango:=
+ app-arch/snappy:=
+ media-libs/flac:=
+ >=media-libs/libwebp-0.4.0:=
+ sys-libs/zlib:=[minizip]
+ kerberos? ( virtual/krb5 )
+"
+# For nvidia-drivers blocker, see bug #413637 .
+RDEPEND="${COMMON_DEPEND}
+ !<www-plugins/chrome-binary-plugins-57
+ x11-misc/xdg-utils
+ virtual/opengl
+ virtual/ttf-fonts
+ selinux? ( sec-policy/selinux-chromium )
+ tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 )
+"
+DEPEND="${COMMON_DEPEND}
+"
+# dev-vcs/git - https://bugs.gentoo.org/593476
+BDEPEND="
+ ${PYTHON_DEPS}
+ >=app-arch/gzip-1.7
+ !arm? (
+ dev-lang/yasm
+ )
+ dev-lang/perl
+ dev-util/gn
+ dev-vcs/git
+ >=dev-util/gperf-3.0.3
+ >=dev-util/ninja-1.7.2
+ >=net-libs/nodejs-7.6.0[inspector]
+ sys-apps/hwids[usb(+)]
+ >=sys-devel/bison-2.4.3
+ sys-devel/flex
+ closure-compile? ( virtual/jre )
+ virtual/pkgconfig
+"
+
+: ${CHROMIUM_FORCE_CLANG=no}
+
+if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then
+ BDEPEND+=" >=sys-devel/clang-7"
+fi
+
+if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then
+ EBUILD_DEATH_HOOKS+=" chromium_pkg_die";
+fi
+
+DISABLE_AUTOFORMATTING="yes"
+DOC_CONTENTS="
+Some web pages may require additional fonts to display properly.
+Try installing some of the following packages if some characters
+are not displayed properly:
+- media-fonts/arphicfonts
+- media-fonts/droid
+- media-fonts/ipamonafont
+- media-fonts/noto
+- media-fonts/ja-ipafonts
+- media-fonts/takao-fonts
+- media-fonts/wqy-microhei
+- media-fonts/wqy-zenhei
+
+To fix broken icons on the Downloads page, you should install an icon
+theme that covers the appropriate MIME types, and configure this as your
+GTK+ icon theme.
+
+For native file dialogs in KDE, install kde-apps/kdialog.
+"
+
+PATCHES=(
+ "${FILESDIR}/chromium-compiler-r10.patch"
+ "${FILESDIR}/chromium-fix-char_traits.patch"
+ "${FILESDIR}/chromium-unbundle-zlib-r1.patch"
+ "${FILESDIR}/chromium-77-system-icu.patch"
+ "${FILESDIR}/chromium-78-pm-crash.patch"
+ "${FILESDIR}/chromium-78-icon.patch"
+ "${FILESDIR}/chromium-78-protobuf-export.patch"
+ "${FILESDIR}/chromium-79-swiftshader-linux.patch"
+ "${FILESDIR}/chromium-79-system-hb.patch"
+ "${FILESDIR}/chromium-79-include.patch"
+ "${FILESDIR}/chromium-79-gcc-ambiguous-nodestructor.patch"
+ "${FILESDIR}/chromium-79-gcc-permissive.patch"
+ "${FILESDIR}/chromium-79-gcc-alignas.patch"
+)
+
+pre_build_checks() {
+ if [[ ${MERGE_TYPE} != binary ]]; then
+ local -x CPP="$(tc-getCXX) -E"
+ if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 8.0; then
+ die "At least gcc 8.0 is required"
+ fi
+ # component build hangs with tcmalloc enabled due to sandbox issue, bug #695976.
+ if has usersandbox ${FEATURES} && use tcmalloc && use component-build; then
+ die "Component build with tcmalloc requires FEATURES=-usersandbox."
+ fi
+ fi
+
+ # Check build requirements, bug #541816 and bug #471810 .
+ CHECKREQS_MEMORY="3G"
+ CHECKREQS_DISK_BUILD="7G"
+ if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then
+ CHECKREQS_DISK_BUILD="25G"
+ if ! use component-build; then
+ CHECKREQS_MEMORY="16G"
+ fi
+ fi
+ check-reqs_pkg_setup
+}
+
+pkg_pretend() {
+ pre_build_checks
+}
+
+pkg_setup() {
+ pre_build_checks
+
+ chromium_suid_sandbox_check_kernel_config
+}
+
+src_prepare() {
+ # Calling this here supports resumption via FEATURES=keepwork
+ python_setup
+
+ default
+
+ mkdir -p third_party/node/linux/node-linux-x64/bin || die
+ ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die
+
+ local keeplibs=(
+ base/third_party/cityhash
+ base/third_party/double_conversion
+ base/third_party/dynamic_annotations
+ base/third_party/icu
+ base/third_party/nspr
+ base/third_party/superfasthash
+ base/third_party/symbolize
+ base/third_party/valgrind
+ base/third_party/xdg_mime
+ base/third_party/xdg_user_dirs
+ buildtools/third_party/libc++
+ buildtools/third_party/libc++abi
+ chrome/third_party/mozilla_security_manager
+ courgette/third_party
+ net/third_party/mozilla_security_manager
+ net/third_party/nss
+ net/third_party/quic
+ net/third_party/uri_template
+ third_party/abseil-cpp
+ third_party/angle
+ third_party/angle/src/common/third_party/base
+ third_party/angle/src/common/third_party/smhasher
+ third_party/angle/src/common/third_party/xxhash
+ third_party/angle/src/third_party/compiler
+ third_party/angle/src/third_party/libXNVCtrl
+ third_party/angle/src/third_party/trace_event
+ third_party/angle/third_party/glslang
+ third_party/angle/third_party/spirv-headers
+ third_party/angle/third_party/spirv-tools
+ third_party/angle/third_party/vulkan-headers
+ third_party/angle/third_party/vulkan-loader
+ third_party/angle/third_party/vulkan-tools
+ third_party/angle/third_party/vulkan-validation-layers
+ third_party/apple_apsl
+ third_party/axe-core
+ third_party/blink
+ third_party/boringssl
+ third_party/boringssl/src/third_party/fiat
+ third_party/boringssl/src/third_party/sike
+ third_party/boringssl/linux-aarch64/crypto/third_party/sike
+ third_party/boringssl/linux-x86_64/crypto/third_party/sike
+ third_party/breakpad
+ third_party/breakpad/breakpad/src/third_party/curl
+ third_party/brotli
+ third_party/cacheinvalidation
+ third_party/catapult
+ third_party/catapult/common/py_vulcanize/third_party/rcssmin
+ third_party/catapult/common/py_vulcanize/third_party/rjsmin
+ third_party/catapult/third_party/beautifulsoup4
+ third_party/catapult/third_party/html5lib-python
+ third_party/catapult/third_party/polymer
+ third_party/catapult/third_party/six
+ third_party/catapult/tracing/third_party/d3
+ third_party/catapult/tracing/third_party/gl-matrix
+ third_party/catapult/tracing/third_party/jpeg-js
+ third_party/catapult/tracing/third_party/jszip
+ third_party/catapult/tracing/third_party/mannwhitneyu
+ third_party/catapult/tracing/third_party/oboe
+ third_party/catapult/tracing/third_party/pako
+ third_party/ced
+ third_party/cld_3
+ third_party/closure_compiler
+ third_party/crashpad
+ third_party/crashpad/crashpad/third_party/lss
+ third_party/crashpad/crashpad/third_party/zlib
+ third_party/crc32c
+ third_party/cros_system_api
+ third_party/dav1d
+ third_party/dawn
+ third_party/depot_tools
+ third_party/devscripts
+ third_party/dom_distiller_js
+ third_party/emoji-segmenter
+ third_party/flatbuffers
+ third_party/flot
+ third_party/freetype
+ third_party/glslang
+ third_party/google_input_tools
+ third_party/google_input_tools/third_party/closure_library
+ third_party/google_input_tools/third_party/closure_library/third_party/closure
+ third_party/googletest
+ third_party/hunspell
+ third_party/iccjpeg
+ third_party/inspector_protocol
+ third_party/jinja2
+ third_party/jsoncpp
+ third_party/jstemplate
+ third_party/khronos
+ third_party/leveldatabase
+ third_party/libXNVCtrl
+ third_party/libaddressinput
+ third_party/libaom
+ third_party/libaom/source/libaom/third_party/vector
+ third_party/libaom/source/libaom/third_party/x86inc
+ third_party/libjingle
+ third_party/libphonenumber
+ third_party/libsecret
+ third_party/libsrtp
+ third_party/libsync
+ third_party/libudev
+ third_party/libwebm
+ third_party/libxml/chromium
+ third_party/libyuv
+ third_party/llvm
+ third_party/lss
+ third_party/lzma_sdk
+ third_party/markupsafe
+ third_party/mesa
+ third_party/metrics_proto
+ third_party/modp_b64
+ third_party/nasm
+ third_party/node
+ third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2
+ third_party/one_euro_filter
+ third_party/openscreen
+ third_party/openscreen/src/third_party/tinycbor/src/src
+ third_party/ots
+ third_party/pdfium
+ third_party/pdfium/third_party/agg23
+ third_party/pdfium/third_party/base
+ third_party/pdfium/third_party/bigint
+ third_party/pdfium/third_party/freetype
+ third_party/pdfium/third_party/lcms
+ third_party/pdfium/third_party/libopenjpeg20
+ third_party/pdfium/third_party/libpng16
+ third_party/pdfium/third_party/libtiff
+ third_party/pdfium/third_party/skia_shared
+ third_party/perfetto
+ third_party/pffft
+ third_party/ply
+ third_party/polymer
+ third_party/private-join-and-compute
+ third_party/protobuf
+ third_party/protobuf/third_party/six
+ third_party/pyjson5
+ third_party/qcms
+ third_party/rnnoise
+ third_party/s2cellid
+ third_party/sfntly
+ third_party/simplejson
+ third_party/skia
+ third_party/skia/include/third_party/skcms
+ third_party/skia/include/third_party/vulkan
+ third_party/skia/third_party/gif
+ third_party/skia/third_party/skcms
+ third_party/skia/third_party/vulkan
+ third_party/smhasher
+ third_party/spirv-headers
+ third_party/SPIRV-Tools
+ third_party/sqlite
+ third_party/swiftshader
+ third_party/swiftshader/third_party/llvm-7.0
+ third_party/swiftshader/third_party/llvm-subzero
+ third_party/swiftshader/third_party/marl
+ third_party/swiftshader/third_party/subzero
+ third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1
+ third_party/unrar
+ third_party/usrsctp
+ third_party/vulkan
+ third_party/web-animations-js
+ third_party/webdriver
+ third_party/webrtc
+ third_party/webrtc/common_audio/third_party/fft4g
+ third_party/webrtc/common_audio/third_party/spl_sqrt_floor
+ third_party/webrtc/modules/third_party/fft
+ third_party/webrtc/modules/third_party/g711
+ third_party/webrtc/modules/third_party/g722
+ third_party/webrtc/rtc_base/third_party/base64
+ third_party/webrtc/rtc_base/third_party/sigslot
+ third_party/widevine
+ third_party/woff2
+ third_party/zlib/google
+ tools/grit/third_party/six
+ url/third_party/mozilla
+ v8/src/third_party/siphash
+ v8/src/third_party/valgrind
+ v8/src/third_party/utf8-decoder
+ v8/third_party/inspector_protocol
+ v8/third_party/v8
+
+ # gyp -> gn leftovers
+ base/third_party/libevent
+ third_party/adobe
+ third_party/speech-dispatcher
+ third_party/usb_ids
+ third_party/xdg-utils
+ third_party/yasm/run_yasm.py
+ )
+ if ! use system-ffmpeg; then
+ keeplibs+=( third_party/ffmpeg third_party/opus )
+ fi
+ if ! use system-icu; then
+ keeplibs+=( third_party/icu )
+ fi
+ if ! use system-libvpx; then
+ keeplibs+=( third_party/libvpx )
+ keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc )
+ fi
+ if use tcmalloc; then
+ keeplibs+=( third_party/tcmalloc )
+ fi
+
+ # Remove most bundled libraries. Some are still needed.
+ build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die
+}
+
+src_configure() {
+ # Calling this here supports resumption via FEATURES=keepwork
+ python_setup
+
+ local myconf_gn=""
+
+ # Make sure the build system will use the right tools, bug #340795.
+ tc-export AR CC CXX NM
+
+ if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then
+ # Force clang since gcc is pretty broken at the moment.
+ CC=${CHOST}-clang
+ CXX=${CHOST}-clang++
+ strip-unsupported-flags
+ fi
+
+ if tc-is-clang; then
+ myconf_gn+=" is_clang=true clang_use_chrome_plugins=false"
+ else
+ myconf_gn+=" is_clang=false"
+ fi
+
+ # Define a custom toolchain for GN
+ myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\""
+
+ if tc-is-cross-compiler; then
+ tc-export BUILD_{AR,CC,CXX,NM}
+ myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\""
+ myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\""
+ else
+ myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\""
+ fi
+
+ # GN needs explicit config for Debug/Release as opposed to inferring it from build directory.
+ myconf_gn+=" is_debug=false"
+
+ # Component build isn't generally intended for use by end users. It's mostly useful
+ # for development and debugging.
+ myconf_gn+=" is_component_build=$(usex component-build true false)"
+
+ # https://chromium.googlesource.com/chromium/src/+/lkcr/docs/jumbo.md
+ myconf_gn+=" use_jumbo_build=$(usex jumbo-build true false)"
+
+ myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")"
+
+ # Disable nacl, we can't build without pnacl (http://crbug.com/269560).
+ myconf_gn+=" enable_nacl=false"
+
+ # Use system-provided libraries.
+ # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733).
+ # TODO: use_system_hunspell (upstream changes needed).
+ # TODO: use_system_libsrtp (bug #459932).
+ # TODO: use_system_protobuf (bug #525560).
+ # TODO: use_system_ssl (http://crbug.com/58087).
+ # TODO: use_system_sqlite (http://crbug.com/22208).
+
+ # libevent: https://bugs.gentoo.org/593458
+ local gn_system_libraries=(
+ flac
+ fontconfig
+ freetype
+ # Need harfbuzz_from_pkgconfig target
+ #harfbuzz-ng
+ libdrm
+ libjpeg
+ libpng
+ libwebp
+ libxml
+ libxslt
+ openh264
+ re2
+ snappy
+ yasm
+ zlib
+ )
+ if use system-ffmpeg; then
+ gn_system_libraries+=( ffmpeg opus )
+ fi
+ if use system-icu; then
+ gn_system_libraries+=( icu )
+ fi
+ if use system-libvpx; then
+ gn_system_libraries+=( libvpx )
+ fi
+ build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die
+
+ # See dependency logic in third_party/BUILD.gn
+ myconf_gn+=" use_system_harfbuzz=true"
+
+ # Optional dependencies.
+ myconf_gn+=" closure_compile=$(usex closure-compile true false)"
+ myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)"
+ myconf_gn+=" enable_widevine=$(usex widevine true false)"
+ myconf_gn+=" use_cups=$(usex cups true false)"
+ myconf_gn+=" use_gnome_keyring=$(usex gnome-keyring true false)"
+ myconf_gn+=" use_kerberos=$(usex kerberos true false)"
+ myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)"
+
+ # TODO: link_pulseaudio=true for GN.
+
+ myconf_gn+=" fieldtrial_testing_like_official_build=true"
+
+ # Never use bundled gold binary. Disable gold linker flags for now.
+ # Do not use bundled clang.
+ # Trying to use gold results in linker crash.
+ myconf_gn+=" use_gold=false use_sysroot=false linux_use_bundled_binutils=false use_custom_libcxx=false"
+
+ # Disable forced lld, bug 641556
+ myconf_gn+=" use_lld=false"
+
+ ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)"
+ myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)"
+ myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\""
+
+ # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys .
+ # Note: these are for Gentoo use ONLY. For your own distribution,
+ # please get your own set of keys. Feel free to contact chromium@gentoo.org
+ # for more info.
+ local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc"
+ local google_default_client_id="329227923882.apps.googleusercontent.com"
+ local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu"
+ myconf_gn+=" google_api_key=\"${google_api_key}\""
+ myconf_gn+=" google_default_client_id=\"${google_default_client_id}\""
+ myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\""
+ local myarch="$(tc-arch)"
+
+ # Avoid CFLAGS problems, bug #352457, bug #390147.
+ if ! use custom-cflags; then
+ replace-flags "-Os" "-O2"
+ strip-flags
+
+ # Prevent linker from running out of address space, bug #471810 .
+ if use x86; then
+ filter-flags "-g*"
+ fi
+
+ # Prevent libvpx build failures. Bug 530248, 544702, 546984.
+ if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then
+ filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2
+ fi
+ fi
+
+ if [[ $myarch = amd64 ]] ; then
+ myconf_gn+=" target_cpu=\"x64\""
+ ffmpeg_target_arch=x64
+ elif [[ $myarch = x86 ]] ; then
+ myconf_gn+=" target_cpu=\"x86\""
+ ffmpeg_target_arch=ia32
+
+ # This is normally defined by compiler_cpu_abi in
+ # build/config/compiler/BUILD.gn, but we patch that part out.
+ append-flags -msse2 -mfpmath=sse -mmmx
+ elif [[ $myarch = arm64 ]] ; then
+ myconf_gn+=" target_cpu=\"arm64\""
+ ffmpeg_target_arch=arm64
+ elif [[ $myarch = arm ]] ; then
+ myconf_gn+=" target_cpu=\"arm\""
+ ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm)
+ else
+ die "Failed to determine target arch, got '$myarch'."
+ fi
+
+ # Make sure that -Werror doesn't get added to CFLAGS by the build system.
+ # Depending on GCC version the warnings are different and we don't want
+ # the build to fail because of that.
+ myconf_gn+=" treat_warnings_as_errors=false"
+
+ # Disable fatal linker warnings, bug 506268.
+ myconf_gn+=" fatal_linker_warnings=false"
+
+ # Bug 491582.
+ export TMPDIR="${WORKDIR}/temp"
+ mkdir -p -m 755 "${TMPDIR}" || die
+
+ # https://bugs.gentoo.org/654216
+ addpredict /dev/dri/ #nowarn
+
+ #if ! use system-ffmpeg; then
+ if false; then
+ local build_ffmpeg_args=""
+ if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then
+ build_ffmpeg_args+=" --disable-asm"
+ fi
+
+ # Re-configure bundled ffmpeg. See bug #491378 for example reasons.
+ einfo "Configuring bundled ffmpeg..."
+ pushd third_party/ffmpeg > /dev/null || die
+ chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \
+ --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die
+ chromium/scripts/copy_config.sh || die
+ chromium/scripts/generate_gn.py || die
+ popd > /dev/null || die
+ fi
+
+ # Explicitly disable ICU data file support for system-icu builds.
+ if use system-icu; then
+ myconf_gn+=" icu_use_data_file=false"
+ fi
+
+ einfo "Configuring Chromium..."
+ set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release
+ echo "$@"
+ "$@" || die
+}
+
+src_compile() {
+ # Final link uses lots of file descriptors.
+ ulimit -n 2048
+
+ # Calling this here supports resumption via FEATURES=keepwork
+ python_setup
+
+ #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die
+
+ # Build mksnapshot and pax-mark it.
+ local x
+ for x in mksnapshot v8_context_snapshot_generator; do
+ if tc-is-cross-compiler; then
+ eninja -C out/Release "host/${x}"
+ pax-mark m "out/Release/host/${x}"
+ else
+ eninja -C out/Release "${x}"
+ pax-mark m "out/Release/${x}"
+ fi
+ done
+
+ # Even though ninja autodetects number of CPUs, we respect
+ # user's options, for debugging with -j 1 or any other reason.
+ eninja -C out/Release chrome chromedriver
+ use suid && eninja -C out/Release chrome_sandbox
+
+ pax-mark m out/Release/chrome
+
+ # Build manpage; bug #684550
+ sed -e 's|@@PACKAGE@@|chromium-browser|g;
+ s|@@MENUNAME@@|Chromium|g;' \
+ chrome/app/resources/manpage.1.in > \
+ out/Release/chromium-browser.1 || die
+}
+
+src_install() {
+ local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser"
+ exeinto "${CHROMIUM_HOME}"
+ doexe out/Release/chrome
+
+ if use suid; then
+ newexe out/Release/chrome_sandbox chrome-sandbox
+ fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox"
+ fi
+
+ doexe out/Release/chromedriver
+
+ local sedargs=( -e "s:/usr/lib/:/usr/$(get_libdir)/:g" )
+ sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r3.sh" > chromium-launcher.sh || die
+ doexe chromium-launcher.sh
+
+ # It is important that we name the target "chromium-browser",
+ # xdg-utils expect it; bug #355517.
+ dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser
+ # keep the old symlink around for consistency
+ dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium
+
+ dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver
+
+ # Allow users to override command-line options, bug #357629.
+ insinto /etc/chromium
+ newins "${FILESDIR}/chromium.default" "default"
+
+ pushd out/Release/locales > /dev/null || die
+ chromium_remove_language_paks
+ popd
+
+ insinto "${CHROMIUM_HOME}"
+ doins out/Release/*.bin
+ doins out/Release/*.pak
+ doins out/Release/*.so
+
+ if ! use system-icu; then
+ doins out/Release/icudtl.dat
+ fi
+
+ doins -r out/Release/locales
+ doins -r out/Release/resources
+
+ if [[ -d out/Release/swiftshader ]]; then
+ insinto "${CHROMIUM_HOME}/swiftshader"
+ doins out/Release/swiftshader/*.so
+ fi
+
+ # Install icons and desktop entry.
+ local branding size
+ for size in 16 24 32 48 64 128 256 ; do
+ case ${size} in
+ 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;;
+ *) branding="chrome/app/theme/chromium" ;;
+ esac
+ newicon -s ${size} "${branding}/product_logo_${size}.png" \
+ chromium-browser.png
+ done
+
+ local mime_types="text/html;text/xml;application/xhtml+xml;"
+ mime_types+="x-scheme-handler/http;x-scheme-handler/https;" # bug #360797
+ mime_types+="x-scheme-handler/ftp;" # bug #412185
+ mime_types+="x-scheme-handler/mailto;x-scheme-handler/webcal;" # bug #416393
+ make_desktop_entry \
+ chromium-browser \
+ "Chromium" \
+ chromium-browser \
+ "Network;WebBrowser" \
+ "MimeType=${mime_types}\nStartupWMClass=chromium-browser"
+ sed -e "/^Exec/s/$/ %U/" -i "${ED}"/usr/share/applications/*.desktop || die
+
+ # Install GNOME default application entry (bug #303100).
+ insinto /usr/share/gnome-control-center/default-apps
+ newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml
+
+ # Install manpage; bug #684550
+ doman out/Release/chromium-browser.1
+ dosym chromium-browser.1 /usr/share/man/man1/chromium.1
+
+ readme.gentoo_create_doc
+}
+
+pkg_postrm() {
+ xdg_icon_cache_update
+ xdg_desktop_database_update
+}
+
+pkg_postinst() {
+ xdg_icon_cache_update
+ xdg_desktop_database_update
+ readme.gentoo_print_elog
+}
diff --git a/www-client/chromium/files/chromium-79-gcc-alignas.patch b/www-client/chromium/files/chromium-79-gcc-alignas.patch
new file mode 100644
index 000000000000..f7f1fe7ac5bc
--- /dev/null
+++ b/www-client/chromium/files/chromium-79-gcc-alignas.patch
@@ -0,0 +1,108 @@
+Re-use chromium alignas workaround in protobuf.
+---
+
+diff --git a/third_party/protobuf/src/google/protobuf/port_def.inc b/third_party/protobuf/src/google/protobuf/port_def.inc
+index f1bd85d..9c204a1 100644
+--- a/third_party/protobuf/src/google/protobuf/port_def.inc
++++ b/third_party/protobuf/src/google/protobuf/port_def.inc
+@@ -528,6 +528,35 @@ PROTOBUF_EXPORT_TEMPLATE_TEST(DEFAULT, __declspec(dllimport));
+ #undef IN
+ #endif // _MSC_VER
+
++// Specify memory alignment for structs, classes, etc.
++// Use like:
++// class PROTOBUF_ALIGNAS(16) MyClass { ... }
++// PROTOBUF_ALIGNAS(16) int array[4];
++//
++// In most places you can use the C++11 keyword "alignas", which is preferred.
++//
++// But compilers have trouble mixing __attribute__((...)) syntax with
++// alignas(...) syntax.
++//
++// Doesn't work in clang or gcc:
++// struct alignas(16) __attribute__((packed)) S { char c; };
++// Works in clang but not gcc:
++// struct __attribute__((packed)) alignas(16) S2 { char c; };
++// Works in clang and gcc:
++// struct alignas(16) S3 { char c; } __attribute__((packed));
++//
++// There are also some attributes that must be specified *before* a class
++// definition: visibility (used for exporting functions/classes) is one of
++// these attributes. This means that it is not possible to use alignas() with a
++// class that is marked as exported.
++#if defined(_MSC_VER)
++#define PROTOBUF_ALIGNAS(byte_alignment) __declspec(align(byte_alignment))
++#elif defined(__GNUC__)
++#define PROTOBUF_ALIGNAS(byte_alignment) __attribute__((aligned(byte_alignment)))
++#else
++#define PROTOBUF_ALIGNAS(byte_alignment) alignas(byte_alignment)
++#endif
++
+ #if defined(__clang__)
+ #pragma clang diagnostic push
+ // TODO(gerbens) ideally we cleanup the code. But a cursory try shows many
+diff --git a/third_party/protobuf/src/google/protobuf/arena.h b/third_party/protobuf/src/google/protobuf/arena.h
+index dedc221..a8515ce 100644
+--- a/third_party/protobuf/src/google/protobuf/arena.h
++++ b/third_party/protobuf/src/google/protobuf/arena.h
+@@ -245,7 +245,7 @@ struct ArenaOptions {
+ // well as protobuf container types like RepeatedPtrField and Map. The protocol
+ // is internal to protobuf and is not guaranteed to be stable. Non-proto types
+ // should not rely on this protocol.
+-class PROTOBUF_EXPORT alignas(8) Arena final {
++class PROTOBUF_EXPORT PROTOBUF_ALIGNAS(8) Arena final {
+ public:
+ // Arena constructor taking custom options. See ArenaOptions below for
+ // descriptions of the options available.
+diff --git a/third_party/protobuf/src/google/protobuf/port_def.inc b/third_party/protobuf/src/google/protobuf/port_def.inc
+index f1bd85d..6d02b53 100644
+--- a/third_party/protobuf/src/google/protobuf/port_def.inc
++++ b/third_party/protobuf/src/google/protobuf/port_def.inc
+@@ -528,6 +528,35 @@ PROTOBUF_EXPORT_TEMPLATE_TEST(DEFAULT, __declspec(dllimport));
+ #undef IN
+ #endif // _MSC_VER
+
++// Specify memory alignment for structs, classes, etc.
++// Use like:
++// class PROTOBUF_ALIGNAS(16) MyClass { ... }
++// PROTOBUF_ALIGNAS(16) int array[4];
++//
++// In most places you can use the C++11 keyword "alignas", which is preferred.
++//
++// But compilers have trouble mixing __attribute__((...)) syntax with
++// alignas(...) syntax.
++//
++// Doesn't work in clang or gcc:
++// struct alignas(16) __attribute__((packed)) S { char c; };
++// Works in clang but not gcc:
++// struct __attribute__((packed)) alignas(16) S2 { char c; };
++// Works in clang and gcc:
++// struct alignas(16) S3 { char c; } __attribute__((packed));
++//
++// There are also some attributes that must be specified *before* a class
++// definition: visibility (used for exporting functions/classes) is one of
++// these attributes. This means that it is not possible to use alignas() with a
++// class that is marked as exported.
++#if defined(_MSC_VER)
++#define PROTOBUF_ALIGNAS(byte_alignment) __declspec(align(byte_alignment))
++#elif defined(__GNUC__)
++#define PROTOBUF_ALIGNAS(byte_alignment) __attribute__((aligned(byte_alignment)))
++#else
++#define PROTOBUF_ALIGNAS(byte_alignment) alignas(byte_alignment)
++#endif
++
+ #if defined(__clang__)
+ #pragma clang diagnostic push
+ // TODO(gerbens) ideally we cleanup the code. But a cursory try shows many
+diff --git a/third_party/protobuf/src/google/protobuf/port_undef.inc b/third_party/protobuf/src/google/protobuf/port_undef.inc
+index b7e67fe..ba1fffc 100644
+--- a/third_party/protobuf/src/google/protobuf/port_undef.inc
++++ b/third_party/protobuf/src/google/protobuf/port_undef.inc
+@@ -80,6 +80,7 @@
+ #undef PROTOBUF_EXPORT_TEMPLATE_STYLE_MATCH_foj3FJo5StF0OvIzl7oMxA__declspec
+ #undef PROTOBUF_EXPORT_TEMPLATE_STYLE_MATCH_DECLSPEC_dllexport
+ #undef PROTOBUF_EXPORT_TEMPLATE_STYLE_MATCH_DECLSPEC_dllimport
++#undef PROTOBUF_ALIGNAS
+
+
+
diff --git a/www-client/chromium/files/chromium-79-gcc-ambiguous-nodestructor.patch b/www-client/chromium/files/chromium-79-gcc-ambiguous-nodestructor.patch
new file mode 100644
index 000000000000..24504325e462
--- /dev/null
+++ b/www-client/chromium/files/chromium-79-gcc-ambiguous-nodestructor.patch
@@ -0,0 +1,13 @@
+diff --git a/net/dns/dns_util.cc b/net/dns/dns_util.cc
+index 14997c4..1543e91 100644
+--- a/net/dns/dns_util.cc
++++ b/net/dns/dns_util.cc
+@@ -144,7 +144,7 @@ const std::vector<DohUpgradeEntry>& GetDohUpgradeList() {
+ // DohProviderId histogram suffix list in
+ // tools/metrics/histograms/histograms.xml.
+ static const base::NoDestructor<std::vector<DohUpgradeEntry>>
+- upgradable_servers({
++ upgradable_servers(std::initializer_list<DohUpgradeEntry>{
+ DohUpgradeEntry(
+ "CleanBrowsingAdult",
+ {"185.228.168.10", "185.228.169.11", "2a0d:2a00:1::1",
diff --git a/www-client/chromium/files/chromium-79-gcc-permissive.patch b/www-client/chromium/files/chromium-79-gcc-permissive.patch
new file mode 100644
index 000000000000..e98f6f0ae383
--- /dev/null
+++ b/www-client/chromium/files/chromium-79-gcc-permissive.patch
@@ -0,0 +1,93 @@
+diff --git a/third_party/blink/public/platform/web_theme_engine.h b/third_party/blink/public/platform/web_theme_engine.h
+index 2b55c0b..f33d224 100644
+--- a/third_party/blink/public/platform/web_theme_engine.h
++++ b/third_party/blink/public/platform/web_theme_engine.h
+@@ -226,7 +226,7 @@ class WebThemeEngine {
+ return base::nullopt;
+ }
+
+- virtual ForcedColors ForcedColors() const { return ForcedColors::kNone; }
++ virtual enum ForcedColors ForcedColors() const { return ForcedColors::kNone; }
+ virtual void SetForcedColors(const blink::ForcedColors forced_colors) {}
+ };
+
+
+From 528e9a3e1f25bd264549c4c7779748abfd16bb1c Mon Sep 17 00:00:00 2001
+From: Jan Wilken Dörrie <jdoerrie@chromium.org>
+Date: Fri, 18 Oct 2019 11:45:24 +0000
+Subject: [PATCH] Reland "GCC: Fix base::internal::InvokeFuncImpl"
+
+This is a reland of 9293d5c86eec1c34fc00716645400b44a14e764e
+
+Original change's description:
+> GCC: Fix base::internal::InvokeFuncImpl
+>
+> GCC doesn't like that the Value data member has no out-of-line
+> definition. The problem is triggered specifically only when compiling
+>
+> components/services/leveldb/leveldb_database_impl.cc
+>
+> which has lambda functions returning locally-defined classes.
+>
+> The current code works as-is in C++17 mode which introduces the concept
+> of inline variables, but in C++14 we need either an explicit out-of-line
+> definition or a function member instead of a data member.
+>
+> Use std::integral_constant for defining the value.
+>
+> Bug: 819294
+> Change-Id: I5c68e14ce3fa9d8b4d8a2cb42d7f9b53938aabf3
+> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1862451
+> Reviewed-by: Jan Wilken Dörrie <jdoerrie@chromium.org>
+> Reviewed-by: Daniel Cheng <dcheng@chromium.org>
+> Commit-Queue: Jüri Valdmann <juri.valdmann@qt.io>
+> Cr-Commit-Position: refs/heads/master@{#706384}
+
+Bug: 819294
+Change-Id: I3d5a52ddc6815516e2239f9347c60de06bf765a2
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1865212
+Reviewed-by: Daniel Cheng <dcheng@chromium.org>
+Commit-Queue: Jan Wilken Dörrie <jdoerrie@chromium.org>
+Cr-Commit-Position: refs/heads/master@{#707329}
+---
+
+diff --git a/base/bind.h b/base/bind.h
+index 7a400af..1070ce6 100644
+--- a/base/bind.h
++++ b/base/bind.h
+@@ -187,18 +187,15 @@
+ // well-formed. Using `Invoker::Run` with a OnceCallback triggers a
+ // static_assert, which is why the ternary expression does not compile.
+ // TODO(crbug.com/752720): Remove this indirection once we have `if constexpr`.
+-template <bool is_once, typename Invoker>
+-struct InvokeFuncImpl;
++template <typename Invoker>
++constexpr auto GetInvokeFunc(std::true_type) {
++ return Invoker::RunOnce;
++}
+
+ template <typename Invoker>
+-struct InvokeFuncImpl<true, Invoker> {
+- static constexpr auto Value = &Invoker::RunOnce;
+-};
+-
+-template <typename Invoker>
+-struct InvokeFuncImpl<false, Invoker> {
+- static constexpr auto Value = &Invoker::Run;
+-};
++constexpr auto GetInvokeFunc(std::false_type) {
++ return Invoker::Run;
++}
+
+ template <template <typename> class CallbackT,
+ typename Functor,
+@@ -229,7 +226,8 @@
+ // InvokeFuncStorage, so that we can ensure its type matches to
+ // PolymorphicInvoke, to which CallbackType will cast back.
+ using PolymorphicInvoke = typename CallbackType::PolymorphicInvoke;
+- PolymorphicInvoke invoke_func = InvokeFuncImpl<kIsOnce, Invoker>::Value;
++ PolymorphicInvoke invoke_func =
++ GetInvokeFunc<Invoker>(std::integral_constant<bool, kIsOnce>());
+
+ using InvokeFuncStorage = internal::BindStateBase::InvokeFuncStorage;
+ return CallbackType(BindState::Create(
diff --git a/www-client/chromium/files/chromium-79-include.patch b/www-client/chromium/files/chromium-79-include.patch
new file mode 100644
index 000000000000..06decbdf06d6
--- /dev/null
+++ b/www-client/chromium/files/chromium-79-include.patch
@@ -0,0 +1,70 @@
+From d26e3fc037f477648b6265ff9cdcb2c616942fae Mon Sep 17 00:00:00 2001
+From: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
+Date: Tue, 15 Oct 2019 14:56:07 +0000
+Subject: [PATCH] ui/display: Include <bitset> for std::bitset
+
+Follow-up to commit 1b7e6d75f ("ui/display: extend EdidParser for HDR
+metadata") to fix the build with libstdc++ (and maybe MSVC):
+
+./../../ui/display/util/edid_parser.cc:416:22: error: no template named 'bitset' in namespace 'std'
+ const std::bitset<kMaxNumColorimetryEntries>
+ ~~~~~^
+./../../ui/display/util/edid_parser.cc:430:22: error: no template named 'bitset' in namespace 'std'
+ const std::bitset<kMaxNumHDRStaticMedatataEntries>
+ ~~~~~^
+
+Bug: 957519, 1012846
+Change-Id: Ic3c9c9416ac446bde9f190b9575ef1a386aa8e8e
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1862917
+Commit-Queue: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
+Commit-Queue: Miguel Casas <mcasas@chromium.org>
+Auto-Submit: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
+Reviewed-by: Miguel Casas <mcasas@chromium.org>
+Cr-Commit-Position: refs/heads/master@{#705965}
+---
+
+diff --git a/ui/display/util/edid_parser.cc b/ui/display/util/edid_parser.cc
+index 44f2fdb..1adebb7 100644
+--- a/ui/display/util/edid_parser.cc
++++ b/ui/display/util/edid_parser.cc
+@@ -7,6 +7,7 @@
+ #include <stddef.h>
+
+ #include <algorithm>
++#include <bitset>
+
+ #include "base/hash/hash.h"
+ #include "base/strings/string_util.h"
+
+IWYU: add missing algorithm
+---
+
+diff --git a/ui/gfx/font.cc b/ui/gfx/font.cc
+index 21367fd..085baeb 100644
+--- a/ui/gfx/font.cc
++++ b/ui/gfx/font.cc
+@@ -8,6 +8,8 @@
+ #include "build/build_config.h"
+ #include "ui/gfx/platform_font.h"
+
++#include <algorithm>
++
+ namespace gfx {
+
+ ////////////////////////////////////////////////////////////////////////////////
+
+IWYU: add missing vector
+---
+
+diff --git a/chrome/browser/apps/launch_service/launch_manager.h b/chrome/browser/apps/launch_service/launch_manager.h
+index 00aeb9d..76570ea 100644
+--- a/chrome/browser/apps/launch_service/launch_manager.h
++++ b/chrome/browser/apps/launch_service/launch_manager.h
+@@ -6,6 +6,7 @@
+ #define CHROME_BROWSER_APPS_LAUNCH_SERVICE_LAUNCH_MANAGER_H_
+
+ #include <string>
++#include <vector>
+
+ #include "base/macros.h"
+
diff --git a/www-client/chromium/files/chromium-79-swiftshader-linux.patch b/www-client/chromium/files/chromium-79-swiftshader-linux.patch
new file mode 100644
index 000000000000..3219dcd254b7
--- /dev/null
+++ b/www-client/chromium/files/chromium-79-swiftshader-linux.patch
@@ -0,0 +1,180 @@
+From 74acd924593c427e5d3528d9ca6fdf2f4cd1383a Mon Sep 17 00:00:00 2001
+From: David 'Digit' Turner <digit@google.com>
+Date: Mon, 14 Oct 2019 15:28:36 +0200
+Subject: [PATCH] [linux]: Remove linux namespace.
+
+'linux' turns out to be a prebuilt macro for GCC (not Clang)
+so using "namespace linux { ... }" actually does not compile.
+
+This CL fixes the issue by removing the namespace, and using
+Linux as a prefix for the corresponding class.
+
+Bug: 140419396
+Change-Id: I1e980bc66b2cf8f2e21d9f7076918e2b476ae4d4
+---
+
+diff --git a/third_party/swiftshader/src/System/Linux/MemFd.cpp b/third_party/swiftshader/src/System/Linux/MemFd.cpp
+index 22b77e4..a8f99e2 100644
+--- a/third_party/swiftshader/src/System/Linux/MemFd.cpp
++++ b/third_party/swiftshader/src/System/Linux/MemFd.cpp
+@@ -37,21 +37,18 @@
+ #define __NR_memfd_create 319
+ #endif /* __NR_memfd_create__ */
+
+-namespace linux
+-{
+-
+-MemFd::~MemFd()
++LinuxMemFd::~LinuxMemFd()
+ {
+ close();
+ }
+
+-void MemFd::importFd(int fd)
++void LinuxMemFd::importFd(int fd)
+ {
+ close();
+ fd_ = fd;
+ }
+
+-int MemFd::exportFd() const
++int LinuxMemFd::exportFd() const
+ {
+ if (fd_ < 0)
+ {
+@@ -62,7 +59,7 @@
+ return ::fcntl(fd_, F_DUPFD_CLOEXEC, 0);
+ }
+
+-bool MemFd::allocate(const char* name, size_t size)
++bool LinuxMemFd::allocate(const char* name, size_t size)
+ {
+ close();
+
+@@ -89,7 +86,7 @@
+ return true;
+ }
+
+-void MemFd::close()
++void LinuxMemFd::close()
+ {
+ if (fd_ >= 0)
+ {
+@@ -97,23 +94,21 @@
+ // https://lwn.net/Articles/576478/ for example.
+ int ret = ::close(fd_);
+ if (ret < 0) {
+- TRACE("MemFd::close() failed with: %s", strerror(errno));
++ TRACE("LinuxMemFd::close() failed with: %s", strerror(errno));
+ assert(false);
+ }
+ fd_ = -1;
+ }
+ }
+
+-void* MemFd::mapReadWrite(size_t offset, size_t size)
++void* LinuxMemFd::mapReadWrite(size_t offset, size_t size)
+ {
+ void* addr = ::mmap(nullptr, size, PROT_READ|PROT_WRITE, MAP_SHARED, fd_,
+ static_cast<off_t>(offset));
+ return (addr == MAP_FAILED) ? nullptr : addr;
+ }
+
+-bool MemFd::unmap(void* addr, size_t size)
++bool LinuxMemFd::unmap(void* addr, size_t size)
+ {
+ return ::munmap(addr, size) == 0;
+ }
+-
+-} // namespace linux
+diff --git a/third_party/swiftshader/src/System/Linux/MemFd.hpp b/third_party/swiftshader/src/System/Linux/MemFd.hpp
+index 8b88473..209d642 100644
+--- a/third_party/swiftshader/src/System/Linux/MemFd.hpp
++++ b/third_party/swiftshader/src/System/Linux/MemFd.hpp
+@@ -22,18 +22,15 @@
+ // supported by the Linux kernel since 3.17 (good enough for Android and desktop
+ // Linux).
+
+-namespace linux
+-{
+-
+-class MemFd {
++class LinuxMemFd {
+ public:
+- MemFd() = default;
++ LinuxMemFd() = default;
+
+- MemFd(const char* name, size_t size) : MemFd() {
++ LinuxMemFd(const char* name, size_t size) : LinuxMemFd() {
+ allocate(name, size);
+ }
+
+- ~MemFd();
++ ~LinuxMemFd();
+
+ // Return true iff the region is valid/allocated.
+ bool isValid() const { return fd_ >= 0; }
+@@ -68,6 +65,4 @@
+ int fd_ = -1;
+ };
+
+-} // namespace linux
+-
+ #endif // MEMFD_LINUX
+diff --git a/third_party/swiftshader/tests/SystemUnitTests/unittests.cpp b/third_party/swiftshader/tests/SystemUnitTests/unittests.cpp
+index 53ff9ec..9026b55 100644
+--- a/third_party/swiftshader/tests/SystemUnitTests/unittests.cpp
++++ b/third_party/swiftshader/tests/SystemUnitTests/unittests.cpp
+@@ -26,14 +26,14 @@
+
+ #ifdef __linux__
+ TEST(MemFd, DefaultConstructor) {
+- linux::MemFd memfd;
++ LinuxMemFd memfd;
+ ASSERT_FALSE(memfd.isValid());
+ ASSERT_EQ(-1, memfd.exportFd());
+ }
+
+ TEST(MemFd, AllocatingConstructor) {
+ const size_t kRegionSize = sw::memoryPageSize() * 8;
+- linux::MemFd memfd("test-region", kRegionSize);
++ LinuxMemFd memfd("test-region", kRegionSize);
+ ASSERT_TRUE(memfd.isValid());
+ ASSERT_GE(memfd.fd(), 0);
+ void* addr = memfd.mapReadWrite(0, kRegionSize);
+@@ -43,7 +43,7 @@
+
+ TEST(MemFd, ExplicitAllocation) {
+ const size_t kRegionSize = sw::memoryPageSize() * 8;
+- linux::MemFd memfd;
++ LinuxMemFd memfd;
+ ASSERT_FALSE(memfd.isValid());
+ ASSERT_EQ(-1, memfd.exportFd());
+ ASSERT_TRUE(memfd.allocate("test-region", kRegionSize));
+@@ -52,7 +52,7 @@
+
+ TEST(MemFd, Close) {
+ const size_t kRegionSize = sw::memoryPageSize() * 8;
+- linux::MemFd memfd("test-region", kRegionSize);
++ LinuxMemFd memfd("test-region", kRegionSize);
+ ASSERT_TRUE(memfd.isValid());
+ int fd = memfd.exportFd();
+ memfd.close();
+@@ -63,7 +63,7 @@
+
+ TEST(MemFd, ExportImportFd) {
+ const size_t kRegionSize = sw::memoryPageSize() * 8;
+- linux::MemFd memfd("test-region1", kRegionSize);
++ LinuxMemFd memfd("test-region1", kRegionSize);
+ auto* addr = reinterpret_cast<uint8_t*>(memfd.mapReadWrite(0, kRegionSize));
+ ASSERT_TRUE(addr);
+ for (size_t n = 0; n < kRegionSize; ++n)
+@@ -74,7 +74,7 @@
+ ASSERT_TRUE(memfd.unmap(addr, kRegionSize));
+ memfd.close();
+
+- linux::MemFd memfd2;
++ LinuxMemFd memfd2;
+ memfd2.importFd(fd);
+ ASSERT_TRUE(memfd2.isValid());
+ addr = reinterpret_cast<uint8_t*>(memfd2.mapReadWrite(0, kRegionSize));
diff --git a/www-client/chromium/files/chromium-79-system-hb.patch b/www-client/chromium/files/chromium-79-system-hb.patch
new file mode 100644
index 000000000000..83e0621777f1
--- /dev/null
+++ b/www-client/chromium/files/chromium-79-system-hb.patch
@@ -0,0 +1,19 @@
+diff --git a/components/paint_preview/common/subset_font.cc b/components/paint_preview/common/subset_font.cc
+index a218d63..6a5bdae 100644
+--- a/components/paint_preview/common/subset_font.cc
++++ b/components/paint_preview/common/subset_font.cc
+@@ -10,11 +10,12 @@
+ #include "base/bind.h"
+ #include "base/callback.h"
+ #include "base/macros.h"
+-#include "third_party/harfbuzz-ng/src/src/hb-subset.h"
+-#include "third_party/harfbuzz-ng/src/src/hb.h"
+ #include "third_party/skia/include/core/SkStream.h"
+ #include "third_party/skia/include/core/SkTypeface.h"
+
++#include <hb-subset.h>
++#include <hb.h>
++
+ namespace paint_preview {
+
+ namespace {