summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorjk2020-05-26 12:42:15 -0500
committerjk2020-05-26 12:42:15 -0500
commit4eca5fbb6aa50288957a129b1a9aaae2cb4e6fc2 (patch)
treee46b743372deeb530c83c24c6b2d5f3b4c88cbfc
parent86f357027fb907508e2056f8da3118f6965cca2b (diff)
downloadaur-4eca5fbb6aa50288957a129b1a9aaae2cb4e6fc2.tar.gz
update to chromium 83.0.4103.61
-rw-r--r--.SRCINFO55
-rw-r--r--PKGBUILD152
-rw-r--r--add-missing-algorithm-header-in-crx_install_error.cc.patch29
-rw-r--r--avoid-double-destruction-of-ServiceWorkerObjectHost.patch138
-rw-r--r--chromium-83-gcc-10.patch64
-rw-r--r--chromium-widevine.patch13
-rw-r--r--eglGetMscRateCHROMIUM.patch604
-rw-r--r--fix-intel-vaapi-wayland.patch21
-rw-r--r--flags.archlinux.gn28
-rw-r--r--include-memory-header-to-get-the-definition-of-std-u.patch32
-rw-r--r--iwyu-std-numeric_limits-is-defined-in-limits.patch29
-rw-r--r--libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch62
-rw-r--r--make-some-of-blink-custom-iterators-STL-compatible.patch95
-rw-r--r--rebuild-Linux-frame-button-cache-when-activation.patch62
-rw-r--r--rename-Relayout-in-DesktopWindowTreeHostPlatform.patch64
-rw-r--r--v8-remove-soon-to-be-removed-getAllFieldPositions.patch (renamed from icu67.patch)81
-rw-r--r--vaapi-build-fix.patch51
17 files changed, 626 insertions, 954 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 4524d1e78869..ba52c7274c3d 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,8 +1,8 @@
pkgbase = ungoogled-chromium-git
pkgdesc = A lightweight approach to removing Google web service dependency (master branch)
- pkgver = 81.0.4044.138.1.r0.gc8e02bd
- pkgrel = 4
- url = https://ungoogled-software.github.io/
+ pkgver = 83.0.4103.61.1.r0.gc732887
+ pkgrel = 1
+ url = https://github.com/ungoogled-software/ungoogled-chromium-archlinux
install = chromium.install
arch = x86_64
license = BSD
@@ -19,6 +19,7 @@ pkgbase = ungoogled-chromium-git
makedepends = lld
makedepends = gn
makedepends = java-runtime-headless
+ makedepends = python2-setuptools
depends = gtk3
depends = nss
depends = alsa-lib
@@ -55,40 +56,40 @@ pkgbase = ungoogled-chromium-git
optdepends = kdialog: needed for file dialogs in KDE
optdepends = org.freedesktop.secrets: password storage backend on GNOME / Xfce
optdepends = kwallet: for storing passwords in KWallet on KDE desktops
- optdepends = intel-media-driver: for hardware video acceleration with Intel GPUs (>= Broadwell)
- optdepends = libva-intel-driver: for hardware video acceleration with Intel GPUs (<= Haswell)
- optdepends = libva-mesa-driver: for hardware video acceleration with AMD/ATI GPUs
- optdepends = libva-vdpau-driver: for hardware video acceleration with NVIDIA GPUs
provides = chromium
conflicts = chromium
- source = https://commondatastorage.googleapis.com/chromium-browser-official/chromium-81.0.4044.138.tar.xz
+ source = https://commondatastorage.googleapis.com/chromium-browser-official/chromium-83.0.4103.61.tar.xz
source = chromium-launcher-6.tar.gz::https://github.com/foutrelis/chromium-launcher/archive/v6.tar.gz
- source = rename-Relayout-in-DesktopWindowTreeHostPlatform.patch
- source = rebuild-Linux-frame-button-cache-when-activation.patch
+ source = chromium-drirc-disable-10bpc-color-configs.conf
+ source = vdpau-support.patch
+ source = fix-intel-vaapi-wayland.patch
source = clean-up-a-call-to-set_utf8.patch
- source = icu67.patch
- source = chromium-widevine.patch
+ source = iwyu-std-numeric_limits-is-defined-in-limits.patch
+ source = add-missing-algorithm-header-in-crx_install_error.cc.patch
+ source = libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch
+ source = include-memory-header-to-get-the-definition-of-std-u.patch
+ source = make-some-of-blink-custom-iterators-STL-compatible.patch
+ source = avoid-double-destruction-of-ServiceWorkerObjectHost.patch
+ source = v8-remove-soon-to-be-removed-getAllFieldPositions.patch
+ source = chromium-83-gcc-10.patch
source = chromium-skia-harmony.patch
source = ungoogled-chromium-master::git://github.com/Eloston/ungoogled-chromium.git
- source = flags.archlinux.gn
- source = chromium-drirc-disable-10bpc-color-configs.conf
- source = vdpau-support.patch
- source = vaapi-build-fix.patch
- source = eglGetMscRateCHROMIUM.patch
- sha256sums = f478f28b8111cb70231df4c36e754d812ad7a94b7c844e9d0515345a71fd77a6
+ sha256sums = 4961f20c4ee6a94490e823f1b1c4128147068f1ce9cfc509e81815f2101405bc
sha256sums = 04917e3cd4307d8e31bfb0027a5dce6d086edb10ff8a716024fbb8bb0c7dccf1
- sha256sums = ae3bf107834bd8eda9a3ec7899fe35fde62e6111062e5def7d24bf49b53db3db
- sha256sums = 46f7fc9768730c460b27681ccf3dc2685c7e1fd22d70d3a82d9e57e3389bb014
+ sha256sums = babda4f5c1179825797496898d77334ac067149cac03d797ab27ac69671a7feb
+ sha256sums = 0ec6ee49113cc8cc5036fa008519b94137df6987bf1f9fbffb2d42d298af868a
+ sha256sums = f6335d1e14e4ed865f37695d67df18008c8664778620e698bb46c35b88a8b4c2
sha256sums = 58c41713eb6fb33b6eef120f4324fa1fb8123b1fbc4ecbe5662f1f9779b9b6af
- sha256sums = 5315977307e69d20b3e856d3f8724835b08e02085a4444a5c5cefea83fd7d006
- sha256sums = 709e2fddba3c1f2ed4deb3a239fc0479bfa50c46e054e7f32db4fb1365fed070
+ sha256sums = 675fb3d6276cce569a641436465f58d5709d1d4a5f62b7052989479fd4aaea24
+ sha256sums = 0e2a78e4aa7272ab0ff4a4c467750e01bad692a026ad9828aaf06d2a9418b9d8
+ sha256sums = 50687079426094f2056d1f4806dc30fc8d6bad16190520e57ba087ec5db1d778
+ sha256sums = 071326135bc25226aa165639dff80a03670a17548f2d2ff5cc4f40982b39c52a
+ sha256sums = 3d7f20e1d2ee7d73ed25e708c0d59a0cb215fcce10a379e3d48a856533c4b0b7
+ sha256sums = d793842e9584bf75e3779918297ba0ffa6dd05394ef5b2bf5fb73aa9c86a7e2f
+ sha256sums = e042024423027ad3ef729a7e4709bdf9714aea49d64cfbbf46a645a05703abc2
+ sha256sums = 3e5ba8c0a70a4bc673deec0c61eb2b58f05a4c784cbdb7c8118be1eb6580db6d
sha256sums = 771292942c0901092a402cc60ee883877a99fb804cb54d568c8c6c94565a48e1
sha256sums = SKIP
- sha256sums = c5cc6d26470696dca806e46782ef84efa7bfc3fa13d5b2a6f9836e00d34a96af
- sha256sums = babda4f5c1179825797496898d77334ac067149cac03d797ab27ac69671a7feb
- sha256sums = 0ec6ee49113cc8cc5036fa008519b94137df6987bf1f9fbffb2d42d298af868a
- sha256sums = fad5e678d62de0e45db1c2aa871628fdc981f78c26392c1dccc457082906a350
- sha256sums = 1dd330409094dc4bf393f00a51961a983360ccf99affd4f97a61d885129d326e
pkgname = ungoogled-chromium-git
diff --git a/PKGBUILD b/PKGBUILD
index 30c3c52d5cd8..6a4b95855d8f 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -5,63 +5,62 @@
# Contributor: Evangelos Foutras <evangelos@foutrelis.com>
pkgname=ungoogled-chromium-git
-pkgver=81.0.4044.138.1.r0.gc8e02bd
-pkgrel=4
+pkgver=83.0.4103.61.1.r0.gc732887
+pkgrel=1
_pkgname=ungoogled-chromium
-_pkgver=81.0.4044.138
-_launcher_ver=6
+_pkgver=83.0.4103.61
_ungoogled_ver=master
+_launcher_ver=6
pkgdesc="A lightweight approach to removing Google web service dependency (master branch)"
arch=('x86_64')
-url="https://ungoogled-software.github.io/"
+url="https://github.com/ungoogled-software/ungoogled-chromium-archlinux"
license=('BSD')
depends=('gtk3' 'nss' 'alsa-lib' 'xdg-utils' 'libxss' 'libcups' 'libgcrypt'
'ttf-liberation' 'systemd' 'dbus' 'libpulse' 'pciutils' 'json-glib' 'libva'
'desktop-file-utils' 'hicolor-icon-theme')
makedepends=('python' 'python2' 'gperf' 'yasm' 'mesa' 'ninja' 'nodejs' 'git'
- 'libpipewire02' 'clang' 'lld' 'gn' 'java-runtime-headless')
+ 'libpipewire02' 'clang' 'lld' 'gn' 'java-runtime-headless'
+ 'python2-setuptools')
optdepends=('pepper-flash: support for Flash content'
'libpipewire02: WebRTC desktop sharing under Wayland'
'kdialog: needed for file dialogs in KDE'
'org.freedesktop.secrets: password storage backend on GNOME / Xfce'
- 'kwallet: for storing passwords in KWallet on KDE desktops'
- 'intel-media-driver: for hardware video acceleration with Intel GPUs (>= Broadwell)'
- 'libva-intel-driver: for hardware video acceleration with Intel GPUs (<= Haswell)'
- 'libva-mesa-driver: for hardware video acceleration with AMD/ATI GPUs'
- 'libva-vdpau-driver: for hardware video acceleration with NVIDIA GPUs')
+ 'kwallet: for storing passwords in KWallet on KDE desktops')
+provides=('chromium')
+conflicts=('chromium')
install=chromium.install
source=(https://commondatastorage.googleapis.com/chromium-browser-official/chromium-$_pkgver.tar.xz
chromium-launcher-$_launcher_ver.tar.gz::https://github.com/foutrelis/chromium-launcher/archive/v$_launcher_ver.tar.gz
- rename-Relayout-in-DesktopWindowTreeHostPlatform.patch
- rebuild-Linux-frame-button-cache-when-activation.patch
- clean-up-a-call-to-set_utf8.patch
- icu67.patch
- chromium-widevine.patch
- chromium-skia-harmony.patch
- # -----------
- $_pkgname-$_ungoogled_ver::git://github.com/Eloston/ungoogled-chromium.git
- flags.archlinux.gn
chromium-drirc-disable-10bpc-color-configs.conf
vdpau-support.patch
- vaapi-build-fix.patch
- eglGetMscRateCHROMIUM.patch)
-sha256sums=('f478f28b8111cb70231df4c36e754d812ad7a94b7c844e9d0515345a71fd77a6'
+ fix-intel-vaapi-wayland.patch
+ clean-up-a-call-to-set_utf8.patch
+ iwyu-std-numeric_limits-is-defined-in-limits.patch
+ add-missing-algorithm-header-in-crx_install_error.cc.patch
+ libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch
+ include-memory-header-to-get-the-definition-of-std-u.patch
+ make-some-of-blink-custom-iterators-STL-compatible.patch
+ avoid-double-destruction-of-ServiceWorkerObjectHost.patch
+ v8-remove-soon-to-be-removed-getAllFieldPositions.patch
+ chromium-83-gcc-10.patch
+ chromium-skia-harmony.patch)
+sha256sums=('4961f20c4ee6a94490e823f1b1c4128147068f1ce9cfc509e81815f2101405bc'
'04917e3cd4307d8e31bfb0027a5dce6d086edb10ff8a716024fbb8bb0c7dccf1'
- 'ae3bf107834bd8eda9a3ec7899fe35fde62e6111062e5def7d24bf49b53db3db'
- '46f7fc9768730c460b27681ccf3dc2685c7e1fd22d70d3a82d9e57e3389bb014'
- '58c41713eb6fb33b6eef120f4324fa1fb8123b1fbc4ecbe5662f1f9779b9b6af'
- '5315977307e69d20b3e856d3f8724835b08e02085a4444a5c5cefea83fd7d006'
- '709e2fddba3c1f2ed4deb3a239fc0479bfa50c46e054e7f32db4fb1365fed070'
- '771292942c0901092a402cc60ee883877a99fb804cb54d568c8c6c94565a48e1'
- # -----------
- 'SKIP'
- 'c5cc6d26470696dca806e46782ef84efa7bfc3fa13d5b2a6f9836e00d34a96af'
'babda4f5c1179825797496898d77334ac067149cac03d797ab27ac69671a7feb'
'0ec6ee49113cc8cc5036fa008519b94137df6987bf1f9fbffb2d42d298af868a'
- 'fad5e678d62de0e45db1c2aa871628fdc981f78c26392c1dccc457082906a350'
- '1dd330409094dc4bf393f00a51961a983360ccf99affd4f97a61d885129d326e')
-provides=('chromium')
-conflicts=('chromium')
+ 'f6335d1e14e4ed865f37695d67df18008c8664778620e698bb46c35b88a8b4c2'
+ '58c41713eb6fb33b6eef120f4324fa1fb8123b1fbc4ecbe5662f1f9779b9b6af'
+ '675fb3d6276cce569a641436465f58d5709d1d4a5f62b7052989479fd4aaea24'
+ '0e2a78e4aa7272ab0ff4a4c467750e01bad692a026ad9828aaf06d2a9418b9d8'
+ '50687079426094f2056d1f4806dc30fc8d6bad16190520e57ba087ec5db1d778'
+ '071326135bc25226aa165639dff80a03670a17548f2d2ff5cc4f40982b39c52a'
+ '3d7f20e1d2ee7d73ed25e708c0d59a0cb215fcce10a379e3d48a856533c4b0b7'
+ 'd793842e9584bf75e3779918297ba0ffa6dd05394ef5b2bf5fb73aa9c86a7e2f'
+ 'e042024423027ad3ef729a7e4709bdf9714aea49d64cfbbf46a645a05703abc2'
+ '3e5ba8c0a70a4bc673deec0c61eb2b58f05a4c784cbdb7c8118be1eb6580db6d'
+ '771292942c0901092a402cc60ee883877a99fb804cb54d568c8c6c94565a48e1')
+source+=($_pkgname-$_ungoogled_ver::git://github.com/Eloston/ungoogled-chromium.git)
+sha256sums+=('SKIP')
# Possible replacements are listed in build/linux/unbundle/replace_gn_files.py
# Keys are the names in the above script; values are the dependencies in Arch
@@ -108,42 +107,49 @@ prepare() {
third_party/blink/renderer/core/xml/parser/xml_document_parser.cc \
third_party/libxml/chromium/*.cc
- # https://crbug.com/1049258
- patch -Np1 -i ../rename-Relayout-in-DesktopWindowTreeHostPlatform.patch
- patch -Np1 -i ../rebuild-Linux-frame-button-cache-when-activation.patch
-
# https://chromium-review.googlesource.com/c/chromium/src/+/2145261
patch -Np1 -i ../clean-up-a-call-to-set_utf8.patch
- # https://crbug.com/v8/10393
- patch -Np3 -d v8 <../icu67.patch
+ # https://chromium-review.googlesource.com/c/chromium/src/+/2153111
+ patch -Np1 -F3 -i ../iwyu-std-numeric_limits-is-defined-in-limits.patch
+
+ # https://chromium-review.googlesource.com/c/chromium/src/+/2152333
+ patch -Np1 -i ../add-missing-algorithm-header-in-crx_install_error.cc.patch
+
+ # https://chromium-review.googlesource.com/c/chromium/src/+/2132403
+ patch -Np1 -i ../libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch
+
+ # https://chromium-review.googlesource.com/c/chromium/src/+/2164645
+ patch -Np1 -i ../include-memory-header-to-get-the-definition-of-std-u.patch
- # Load bundled Widevine CDM if available (see chromium-widevine in the AUR)
- # M79 is supposed to download it as a component but it doesn't seem to work
- patch -Np1 -i ../chromium-widevine.patch
+ # https://chromium-review.googlesource.com/c/chromium/src/+/2174199
+ patch -Np1 -i ../make-some-of-blink-custom-iterators-STL-compatible.patch
+
+ # https://chromium-review.googlesource.com/c/chromium/src/+/2094496
+ patch -Np1 -i ../avoid-double-destruction-of-ServiceWorkerObjectHost.patch
+
+ # https://crbug.com/v8/10393
+ patch -Np1 -d v8 <../v8-remove-soon-to-be-removed-getAllFieldPositions.patch
# https://crbug.com/skia/6663#c10
patch -Np0 -i ../chromium-skia-harmony.patch
+ # Fixes from Gentoo
+ patch -Np1 -i ../chromium-83-gcc-10.patch
+
# Fix VA-API on Nvidia
patch -Np1 -i ../vdpau-support.patch
- # Fix VAAPI build on chromium 81+
- patch -Np1 -i ../vaapi-build-fix.patch
+ # Fix VA-API on Intel on Wayland
+ patch -Np1 -i ../fix-intel-vaapi-wayland.patch
- # https://bugs.chromium.org/p/chromium/issues/detail?id=1064078
- patch -Np1 -i ../eglGetMscRateCHROMIUM.patch
-
- # Ungoogled chromium stuff
+ # Ungoogled Chromium changes
_ungoogled_repo="$srcdir/$_pkgname-$_ungoogled_ver"
_utils="${_ungoogled_repo}/utils"
- msg2 'Applying ungoogled chromium patches'
- # Prune binaries
python "$_utils/prune_binaries.py" ./ "$_ungoogled_repo/pruning.list"
- # Patches themselves
python "$_utils/patches.py" apply ./ "$_ungoogled_repo/patches"
- # domain substitution
- python "$_utils/domain_substitution.py" apply -r "$_ungoogled_repo/domain_regex.list" -f "$_ungoogled_repo/domain_substitution.list" -c domainsubcache.tar.gz ./
+ python "$_utils/domain_substitution.py" apply -r "$_ungoogled_repo/domain_regex.list" \
+ -f "$_ungoogled_repo/domain_substitution.list" -c domainsubcache.tar.gz ./
# Force script incompatible with Python 3 to use /usr/bin/python2
sed -i '1s|python$|&2|' third_party/dom_distiller_js/protoc_plugins/*.py
@@ -159,6 +165,7 @@ prepare() {
find "third_party/$_lib" -type f \
\! -path "third_party/$_lib/chromium/*" \
\! -path "third_party/$_lib/google/*" \
+ \! -path "third_party/harfbuzz-ng/utils/hb_scoped.h" \
\! -path 'third_party/yasm/run_yasm.py' \
\! -regex '.*\.\(gn\|gni\|isolate\)' \
-delete
@@ -183,12 +190,21 @@ build() {
export AR=ar
export NM=nm
- _ungoogled_repo="$srcdir/ungoogled-chromium-$_ungoogled_ver"
- mkdir -p out/Release
- # Assemble GN flags
- cp "$_ungoogled_repo/flags.gn" "out/Release/args.gn"
- printf '\n' >> "out/Release/args.gn"
- cat "$srcdir/flags.archlinux.gn" >> "out/Release/args.gn"
+ local _flags=(
+ 'custom_toolchain="//build/toolchain/linux/unbundle:default"'
+ 'host_toolchain="//build/toolchain/linux/unbundle:default"'
+ 'is_official_build=true' # implies is_cfi=true on x86_64
+ 'ffmpeg_branding="Chrome"'
+ 'proprietary_codecs=true'
+ 'rtc_use_pipewire=true'
+ 'link_pulseaudio=true'
+ 'use_gnome_keyring=false'
+ 'use_sysroot=false'
+ 'linux_use_bundled_binutils=false'
+ 'use_custom_libcxx=false'
+ 'use_vaapi=true'
+ 'enable_swiftshader=false'
+ )
if [[ -n ${_system_libs[icu]+set} ]]; then
_flags+=('icu_use_data_file=false')
@@ -198,6 +214,10 @@ build() {
_flags+=('symbol_level=0')
fi
+ # Append ungoogled chromium flags to _flags array
+ _ungoogled_repo="$srcdir/ungoogled-chromium-$_ungoogled_ver"
+ readarray -t -O ${#_flags[@]} _flags < "${_ungoogled_repo}/flags.gn"
+
# Facilitate deterministic builds (taken from build/config/compiler/BUILD.gn)
CFLAGS+=' -Wno-builtin-macro-redefined'
CXXFLAGS+=' -Wno-builtin-macro-redefined'
@@ -207,7 +227,7 @@ build() {
CFLAGS+=' -Wno-unknown-warning-option'
CXXFLAGS+=' -Wno-unknown-warning-option'
- gn gen out/Release --script-executable=/usr/bin/python2
+ gn gen out/Release --args="${_flags[*]}" --script-executable=/usr/bin/python2
ninja -C out/Release chrome chrome_sandbox chromedriver
}
@@ -219,13 +239,13 @@ package() {
cd "$srcdir/chromium-$_pkgver"
- install -Dm644 ../chromium-drirc-disable-10bpc-color-configs.conf \
- "$pkgdir/usr/share/drirc.d/10-$pkgname.conf"
-
install -D out/Release/chrome "$pkgdir/usr/lib/chromium/chromium"
install -Dm4755 out/Release/chrome_sandbox "$pkgdir/usr/lib/chromium/chrome-sandbox"
ln -s /usr/lib/chromium/chromedriver "$pkgdir/usr/bin/chromedriver"
+ install -Dm644 ../chromium-drirc-disable-10bpc-color-configs.conf \
+ "$pkgdir/usr/share/drirc.d/10-$pkgname.conf"
+
install -Dm644 chrome/installer/linux/common/desktop.template \
"$pkgdir/usr/share/applications/chromium.desktop"
install -Dm644 chrome/app/resources/manpage.1.in \
diff --git a/add-missing-algorithm-header-in-crx_install_error.cc.patch b/add-missing-algorithm-header-in-crx_install_error.cc.patch
new file mode 100644
index 000000000000..570f7b319534
--- /dev/null
+++ b/add-missing-algorithm-header-in-crx_install_error.cc.patch
@@ -0,0 +1,29 @@
+From 2b9d6daa0ab5ce45ec5555466d5a5a583a020ea8 Mon Sep 17 00:00:00 2001
+From: Daniel Playfair Cal <daniel.playfair.cal@gmail.com>
+Date: Sat, 18 Apr 2020 00:27:38 +0000
+Subject: [PATCH] Add missing algorithm header in crx_install_error.cc
+
+This is needed for the use of std::find.
+
+Change-Id: I2dc43b3887c467986c5346be5a9e27a987e1e5b3
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2152333
+Reviewed-by: Ken Rockot <rockot@google.com>
+Commit-Queue: Ken Rockot <rockot@google.com>
+Cr-Commit-Position: refs/heads/master@{#760272}
+---
+ extensions/browser/install/crx_install_error.cc | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/extensions/browser/install/crx_install_error.cc b/extensions/browser/install/crx_install_error.cc
+index a9765bb0a5a..bd0d3e35a16 100644
+--- a/extensions/browser/install/crx_install_error.cc
++++ b/extensions/browser/install/crx_install_error.cc
+@@ -4,6 +4,8 @@
+
+ #include "extensions/browser/install/crx_install_error.h"
+
++#include <algorithm>
++
+ #include "base/logging.h"
+ #include "extensions/browser/install/sandboxed_unpacker_failure_reason.h"
+
diff --git a/avoid-double-destruction-of-ServiceWorkerObjectHost.patch b/avoid-double-destruction-of-ServiceWorkerObjectHost.patch
new file mode 100644
index 000000000000..5e1df005c961
--- /dev/null
+++ b/avoid-double-destruction-of-ServiceWorkerObjectHost.patch
@@ -0,0 +1,138 @@
+From bd59ce32629ef684624821419c43967b73d2989e Mon Sep 17 00:00:00 2001
+From: Hiroki Nakagawa <nhiroki@chromium.org>
+Date: Fri, 8 May 2020 08:25:31 +0000
+Subject: [PATCH] ServiceWorker: Avoid double destruction of
+ ServiceWorkerObjectHost on connection error
+
+This CL avoids the case where ServiceWorkerObjectHost is destroyed twice
+on ServiceWorkerObjectHost::OnConnectionError() when Chromium is built
+with the GCC build toolchain.
+
+> How does the issue happen?
+
+ServiceWorkerObjectHost has a cyclic reference like this:
+
+ServiceWorkerObjectHost
+ --([1] scoped_refptr)--> ServiceWorkerVersion
+ --([2] std::unique_ptr)--> ServiceWorkerProviderHost
+ --([3] std::unique_ptr)--> ServiceWorkerContainerHost
+ --([4] std::unique_ptr)--> ServiceWorkerObjectHost
+
+Note that ServiceWorkerContainerHost manages ServiceWorkerObjectHost in
+map<int64_t version_id, std::unique_ptr<ServiceWorkerObjectHost>>.
+
+When ServiceWorkerObjectHost::OnConnectionError() is called, the
+function removes the reference [4] from the map, and destroys
+ServiceWorkerObjectHost. If the object host has the last reference [1]
+to ServiceWorkerVersion, the destruction also cuts off the references
+[2] and [3], and destroys ServiceWorkerProviderHost and
+ServiceWorkerContainerHost.
+
+This seems to work well on the Chromium's default toolchain, but not
+work on the GCC toolchain. According to the report, destruction of
+ServiceWorkerContainerHost happens while the map owned by the container
+host is erasing the ServiceWorkerObjectHost, and this results in crash
+due to double destruction of the object host.
+
+I don't know the reason why this happens only on the GCC toolchain, but
+I suspect the order of object destruction on std::map::erase() could be
+different depending on the toolchains.
+
+> How does this CL fix this?
+
+The ideal fix is to redesign the ownership model of
+ServiceWorkerVersion, but it's not feasible in the short term.
+
+Instead, this CL avoids destruction of ServiceWorkerObjectHost on
+std::map::erase(). The new code takes the ownership of the object host
+from the map first, and then erases the entry from the map. This
+separates timings to erase the map entry and to destroy the object host,
+so the crash should no longer happen.
+
+Bug: 1056598
+Change-Id: Id30654cb575bc557c42044d6f0c6f1f9bfaed613
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2094496
+Reviewed-by: Makoto Shimazu <shimazu@chromium.org>
+Commit-Queue: Hiroki Nakagawa <nhiroki@chromium.org>
+Cr-Commit-Position: refs/heads/master@{#766770}
+---
+ .../service_worker_container_host.cc | 10 +++++
+ .../service_worker_object_host_unittest.cc | 38 +++++++++++++++++++
+ 2 files changed, 48 insertions(+)
+
+diff --git a/content/browser/service_worker/service_worker_container_host.cc b/content/browser/service_worker/service_worker_container_host.cc
+index ec7fb1449af..98c62093b0e 100644
+--- a/content/browser/service_worker/service_worker_container_host.cc
++++ b/content/browser/service_worker/service_worker_container_host.cc
+@@ -669,6 +669,16 @@ void ServiceWorkerContainerHost::RemoveServiceWorkerObjectHost(
+ int64_t version_id) {
+ DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
+ DCHECK(base::Contains(service_worker_object_hosts_, version_id));
++
++ // ServiceWorkerObjectHost to be deleted may have the last reference to
++ // ServiceWorkerVersion that indirectly owns this ServiceWorkerContainerHost.
++ // If we erase the object host directly from the map, |this| could be deleted
++ // during the map operation and may crash. To avoid the case, we take the
++ // ownership of the object host from the map first, and then erase the entry
++ // from the map. See https://crbug.com/1056598 for details.
++ std::unique_ptr<ServiceWorkerObjectHost> to_be_deleted =
++ std::move(service_worker_object_hosts_[version_id]);
++ DCHECK(to_be_deleted);
+ service_worker_object_hosts_.erase(version_id);
+ }
+
+diff --git a/content/browser/service_worker/service_worker_object_host_unittest.cc b/content/browser/service_worker/service_worker_object_host_unittest.cc
+index 408d7c1f9d1..6eab59040ab 100644
+--- a/content/browser/service_worker/service_worker_object_host_unittest.cc
++++ b/content/browser/service_worker/service_worker_object_host_unittest.cc
+@@ -200,6 +200,19 @@ class ServiceWorkerObjectHostTest : public testing::Test {
+ return registration_info;
+ }
+
++ void CallOnConnectionError(ServiceWorkerContainerHost* container_host,
++ int64_t version_id) {
++ // ServiceWorkerObjectHost has the last reference to the version.
++ ServiceWorkerObjectHost* object_host =
++ GetServiceWorkerObjectHost(container_host, version_id);
++ EXPECT_TRUE(object_host->version_->HasOneRef());
++
++ // Make sure that OnConnectionError induces destruction of the version and
++ // the object host.
++ object_host->receivers_.Clear();
++ object_host->OnConnectionError();
++ }
++
+ BrowserTaskEnvironment task_environment_;
+ std::unique_ptr<EmbeddedWorkerTestHelper> helper_;
+ scoped_refptr<ServiceWorkerRegistration> registration_;
+@@ -409,5 +422,30 @@ TEST_F(ServiceWorkerObjectHostTest, DispatchExtendableMessageEvent_FromClient) {
+ events[0]->source_info_for_client->client_type);
+ }
+
++// This is a regression test for https://crbug.com/1056598.
++TEST_F(ServiceWorkerObjectHostTest, OnConnectionError) {
++ const GURL scope("https://www.example.com/");
++ const GURL script_url("https://www.example.com/service_worker.js");
++ Initialize(std::make_unique<EmbeddedWorkerTestHelper>(base::FilePath()));
++ SetUpRegistration(scope, script_url);
++
++ // Create the provider host.
++ ASSERT_EQ(blink::ServiceWorkerStatusCode::kOk,
++ StartServiceWorker(version_.get()));
++
++ // Set up the case where the last reference to the version is owned by the
++ // service worker object host.
++ ServiceWorkerContainerHost* container_host =
++ version_->provider_host()->container_host();
++ ServiceWorkerVersion* version_rawptr = version_.get();
++ version_ = nullptr;
++ ASSERT_TRUE(version_rawptr->HasOneRef());
++
++ // Simulate the connection error that induces the object host destruction.
++ // This shouldn't crash.
++ CallOnConnectionError(container_host, version_rawptr->version_id());
++ base::RunLoop().RunUntilIdle();
++}
++
+ } // namespace service_worker_object_host_unittest
+ } // namespace content
diff --git a/chromium-83-gcc-10.patch b/chromium-83-gcc-10.patch
new file mode 100644
index 000000000000..974b49cde703
--- /dev/null
+++ b/chromium-83-gcc-10.patch
@@ -0,0 +1,64 @@
+From e473f41284ccc8fa4bc4622d087194b18a1ec23a Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Tue, 7 Apr 2020 16:37:10 +0000
+Subject: [PATCH] GCC: fix includes for gcc-10
+
+---
+ chrome/browser/search/background/ntp_backgrounds.h | 1 +
+ third_party/webrtc/call/rtx_receive_stream.h | 1 +
+ .../webrtc/modules/audio_processing/aec3/clockdrift_detector.h | 1 +
+ ui/gfx/linux/drm_util_linux.h | 2 ++
+ 5 files changed, 6 insertions(+)
+
+diff --git a/chrome/browser/search/background/ntp_backgrounds.h b/chrome/browser/search/background/ntp_backgrounds.h
+index 7afc0a2..ea5818e 100644
+--- a/chrome/browser/search/background/ntp_backgrounds.h
++++ b/chrome/browser/search/background/ntp_backgrounds.h
+@@ -6,6 +6,7 @@
+ #define CHROME_BROWSER_SEARCH_BACKGROUND_NTP_BACKGROUNDS_H_
+
+ #include <array>
++#include <cstddef>
+
+ class GURL;
+
+diff --git a/third_party/webrtc/call/rtx_receive_stream.h b/third_party/webrtc/call/rtx_receive_stream.h
+index 8ffa440..113a816 100644
+--- a/third_party/webrtc/call/rtx_receive_stream.h
++++ b/third_party/webrtc/call/rtx_receive_stream.h
+@@ -12,6 +12,7 @@
+ #define CALL_RTX_RECEIVE_STREAM_H_
+
+ #include <map>
++#include <cstdint>
+
+ #include "call/rtp_packet_sink_interface.h"
+
+diff --git a/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h b/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h
+index 22528c9..69e624e 100644
+--- a/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h
++++ b/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h
+@@ -12,6 +12,7 @@
+ #define MODULES_AUDIO_PROCESSING_AEC3_CLOCKDRIFT_DETECTOR_H_
+
+ #include <array>
++#include <cstddef>
+
+ namespace webrtc {
+
+diff --git a/ui/gfx/linux/drm_util_linux.h b/ui/gfx/linux/drm_util_linux.h
+index 86ff2eb..990f12c 100644
+--- a/ui/gfx/linux/drm_util_linux.h
++++ b/ui/gfx/linux/drm_util_linux.h
+@@ -7,6 +7,8 @@
+
+ #include "ui/gfx/buffer_types.h"
+
++#include <cstdint>
++
+ namespace ui {
+
+ int GetFourCCFormatFromBufferFormat(gfx::BufferFormat format);
+--
+2.24.1
+
diff --git a/chromium-widevine.patch b/chromium-widevine.patch
deleted file mode 100644
index 32f0ae2fb5e6..000000000000
--- a/chromium-widevine.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/third_party/widevine/cdm/BUILD.gn b/third_party/widevine/cdm/BUILD.gn
-index ed0e2f5208b..5b431a030d5 100644
---- a/third_party/widevine/cdm/BUILD.gn
-+++ b/third_party/widevine/cdm/BUILD.gn
-@@ -14,7 +14,7 @@ buildflag_header("buildflags") {
-
- flags = [
- "ENABLE_WIDEVINE=$enable_widevine",
-- "BUNDLE_WIDEVINE_CDM=$bundle_widevine_cdm",
-+ "BUNDLE_WIDEVINE_CDM=true",
- "ENABLE_WIDEVINE_CDM_COMPONENT=$enable_widevine_cdm_component",
- ]
- }
diff --git a/eglGetMscRateCHROMIUM.patch b/eglGetMscRateCHROMIUM.patch
deleted file mode 100644
index 07557635196c..000000000000
--- a/eglGetMscRateCHROMIUM.patch
+++ /dev/null
@@ -1,604 +0,0 @@
-From 5cddfb828ddd82fc741549d5ee44cd9b94bd97f5 Mon Sep 17 00:00:00 2001
-From: Jonah Ryan-Davis <jonahr@google.com>
-Date: Mon, 30 Mar 2020 17:13:54 +0000
-Subject: [PATCH] Use EGL_ANGLE_sync_control_rate for eglGetMscRate call
-
-eglGetMscRateCHROMIUM is not universally supported, so we will
-switch to using the ANGLE version of the extension instead.
-
-Bug: chromium:1064078
-Change-Id: Ic57e2e55230df1d1c2c584e1cbf54331330a0b87
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2120453
-Reviewed-by: Zhenyao Mo <zmo@chromium.org>
-Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
-Cr-Commit-Position: refs/heads/master@{#754518}
----
-
-diff --git a/gpu/GLES2/extensions/ANGLE/EGL_ANGLE_sync_control_rate.txt b/gpu/GLES2/extensions/ANGLE/EGL_ANGLE_sync_control_rate.txt
-new file mode 100644
-index 0000000..2056ae8
---- /dev/null
-+++ b/gpu/GLES2/extensions/ANGLE/EGL_ANGLE_sync_control_rate.txt
-@@ -0,0 +1,110 @@
-+Name
-+
-+ ANGLE_sync_control_rate
-+
-+Name Strings
-+
-+ EGL_ANGLE_sync_control_rate
-+
-+Contact
-+
-+ Jonah Ryan-Davis, Google (jonahr 'at' google.com)
-+
-+Status
-+
-+ Draft.
-+
-+Version
-+
-+ Version 1, 2020-03-24
-+
-+ Based on GLX_OML_sync_control Revision 6.0
-+
-+Number
-+
-+ ???
-+
-+Dependencies
-+
-+ The extension is written against the EGL 1.2 Specification, although it
-+ should work on other versions of these specifications. This extension
-+ also requires an operating system which supports CLOCK_MONOTONIC.
-+
-+Overview
-+
-+ This extension provides counters which let applications know about the
-+ timing of the last vertical retrace. By looking at the system clock, as
-+ well as the refresh rate of the monitor, this should enable applications
-+ to predict the position of future retraces so as to schedule an optimal
-+ workload.
-+
-+ This extension incorporates the use of three counters that provide
-+ the necessary synchronization. The Unadjusted System Time (or UST)
-+ is the 64-bit CLOCK_MONOTONIC clock; in particular this lets the
-+ application schedule future vertical retraces by querying this clock.
-+ The graphics Media Stream Counter (or graphics MSC) is a counter
-+ that is unique to the graphics subsystem and increments for each
-+ vertical retrace that occurs. The Swap Buffer Counter (SBC) is an
-+ attribute of an EGLSurface and is incremented each time a swap
-+ buffer action is performed on the associated surface.
-+
-+ The use of these three counters allows the application to
-+ synchronize graphics rendering to vertical retraces and/or swap
-+ buffer actions. For example, by querying the synchronization values for
-+ a given surface, the application can accurately predict the timing for
-+ the next vertical retraces and schedule rendering accordingly.
-+
-+Issues
-+
-+ None.
-+
-+IP Status
-+
-+ No known issues.
-+
-+New Procedures and Functions
-+
-+ Bool eglGetMscRateANGLE(EGLDisplay* dpy,
-+ EGLSurface surface,
-+ int32_t* numerator,
-+ int32_t* denominator)
-+
-+New Tokens
-+
-+ None
-+
-+Additions to the EGL 1.3 Specification
-+
-+ The graphics MSC value is incremented once for each screen refresh.
-+ For a non-interlaced display, this means that the graphics MSC value
-+ is incremented for each frame. For an interlaced display, it means
-+ that it will be incremented for each field. For a multi-monitor
-+ system, the monitor used to determine MSC is the one where the surface
-+ is located. If the surface spans multiple monitors, the monitor used
-+ to determine MSC is the one with the biggest coverage in pixels.
-+
-+ eglGetMscRateANGLE returns the rate at which the MSC will be incremented
-+ for the display associated with <hdc>. The rate is expressed in Hertz
-+ as <numerator> / <denominator>. If the MSC rate in Hertz is an
-+ integer, then <denominator> will be 1 and <numerator> will be
-+ the MSC rate.
-+
-+ The function eglGetMscRateANGLE will return TRUE if the function
-+ completed successfully, FALSE otherwise.
-+
-+ Each time eglSwapBuffer succeeds, the SBC will be increased within a
-+ finite time period.
-+
-+Errors
-+
-+ The function eglGetMscRateANGLE will return FALSE if there is no
-+ current EGLContext.
-+
-+New Implementation Dependent State
-+
-+ None
-+
-+Revision History
-+
-+ Version 1, 2020-03-24 (Jonah Ryan-Davis)
-+ - Initial draft, based on GLX_OML_sync_control revision 6.0.
-diff --git a/gpu/GLES2/extensions/CHROMIUM/EGL_CHROMIUM_sync_control.txt b/gpu/GLES2/extensions/CHROMIUM/EGL_CHROMIUM_sync_control.txt
-index 14f4e56..f699f61 100644
---- a/gpu/GLES2/extensions/CHROMIUM/EGL_CHROMIUM_sync_control.txt
-+++ b/gpu/GLES2/extensions/CHROMIUM/EGL_CHROMIUM_sync_control.txt
-@@ -16,7 +16,7 @@
-
- Version
-
-- Version 3, 2020-01-23
-+ Version 2, 2015-05-05
-
- Based on GLX_OML_sync_control Revision 6.0
-
-@@ -70,12 +70,6 @@
- int64_t* msc,
- int64_t* sbc)
-
-- Bool eglGetMscRateCHROMIUM(EGLDisplay* dpy,
-- EGLSurface surface,
-- int32_t* numerator,
-- int32_t* denominator)
--
--
- New Tokens
-
- None
-@@ -112,22 +106,16 @@
- is located. If the surface spans multiple monitors, the monitor used
- to determine MSC is the one with the biggest coverage in pixels.
-
-- eglGetMscRateCHROMIUM returns the rate at which the MSC will be incremented
-- for the display associated with <hdc>. The rate is expressed in Hertz
-- as <numerator> / <denominator>. If the MSC rate in Hertz is an
-- integer, then <denominator> will be 1 and <numerator> will be
-- the MSC rate.
--
-- The functions eglGetSyncValuesCHROMIUM, and eglGetMscRateCHROMIUM will
-- return TRUE if the function completed successfully, FALSE otherwise.
-+ The function eglGetSyncValuesCHROMIUM will return TRUE if the function
-+ completed successfully, FALSE otherwise.
-
- Each time eglSwapBuffer succeeds, the SBC will be increased within a
- finite time period.
-
- Errors
-
-- The functions eglGetSyncValuesCHROMIUM, and eglGetMscRateCHROMIUM will
-- return FALSE if there is no current EGLContext.
-+ The function eglGetSyncValuesCHROMIUM will return FALSE if there is no
-+ current EGLContext.
-
-
- New State
-@@ -144,10 +132,6 @@
-
- Revision History
-
-- Version 3, 2020-01-23 (Jonah Ryan-Davis)
-- - Add the function eglGetMscRateCHROMIUM based on glXGetMscRateOML from
-- GLX_OML_sync_control revision 6.0.
--
- Version 2, 2015-05-05 (Chad Versace)
- - Rename to EGL_CHROMIUM_sync_control from EGL_CHROMIUM_get_sync_values.
- EGL_CHROMIUM_sync_control is the de facto extension name because all
-diff --git a/ui/gl/EGL/eglextchromium.h b/ui/gl/EGL/eglextchromium.h
-index e66d34a..22e3cf0 100644
---- a/ui/gl/EGL/eglextchromium.h
-+++ b/ui/gl/EGL/eglextchromium.h
-@@ -22,21 +22,26 @@
- EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncValuesCHROMIUM(
- EGLDisplay dpy, EGLSurface surface, EGLuint64CHROMIUM *ust,
- EGLuint64CHROMIUM *msc, EGLuint64CHROMIUM *sbc);
--EGLAPI EGLBoolean EGLAPIENTRY eglGetMscRateCHROMIUM(EGLDisplay dpy,
-- EGLSurface surface,
-- EGLint* numerator,
-- EGLint* denominator);
- #endif /* EGL_EGLEXT_PROTOTYPES */
- typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCVALUESCHROMIUMPROC)
- (EGLDisplay dpy, EGLSurface surface, EGLuint64CHROMIUM *ust,
- EGLuint64CHROMIUM *msc, EGLuint64CHROMIUM *sbc);
--typedef EGLBoolean(EGLAPIENTRYP PFNEGLGETMSCRATECHROMIUMPROC)(
-- EGLDisplay dpy,
-- EGLSurface surface,
-- EGLint* numerator,
-- EGLint* denominator);
--#endif
--#endif
-+#endif /* EGL_CHROMIUM_sync_control */
-+
-+#ifndef EGL_ANGLE_sync_control_rate
-+#define EGL_ANGLE_sync_control_rate 1
-+#ifdef EGL_EGLEXT_PROTOTYPES
-+EGLAPI EGLBoolean EGLAPIENTRY eglGetMscRateANGLE(EGLDisplay dpy,
-+ EGLSurface surface,
-+ EGLint* numerator,
-+ EGLint* denominator);
-+#endif /* EGL_EGLEXT_PROTOTYPES */
-+typedef EGLBoolean(EGLAPIENTRYP PFNEGLGETMSCRATEANGLEPROC)(EGLDisplay dpy,
-+ EGLSurface surface,
-+ EGLint* numerator,
-+ EGLint* denominator);
-+#endif /* EGL_ANGLE_sync_control_rate */
-+#endif /* KHRONOS_SUPPORT_INT64 */
-
- #ifdef __cplusplus
- }
-diff --git a/ui/gl/egl_bindings_autogen_mock.cc b/ui/gl/egl_bindings_autogen_mock.cc
-index f6562ad..d4d3a04 100644
---- a/ui/gl/egl_bindings_autogen_mock.cc
-+++ b/ui/gl/egl_bindings_autogen_mock.cc
-@@ -299,12 +299,12 @@
- }
-
- EGLBoolean GL_BINDING_CALL
--MockEGLInterface::Mock_eglGetMscRateCHROMIUM(EGLDisplay dpy,
-- EGLSurface surface,
-- EGLint* numerator,
-- EGLint* denominator) {
-- MakeEglMockFunctionUnique("eglGetMscRateCHROMIUM");
-- return interface_->GetMscRateCHROMIUM(dpy, surface, numerator, denominator);
-+MockEGLInterface::Mock_eglGetMscRateANGLE(EGLDisplay dpy,
-+ EGLSurface surface,
-+ EGLint* numerator,
-+ EGLint* denominator) {
-+ MakeEglMockFunctionUnique("eglGetMscRateANGLE");
-+ return interface_->GetMscRateANGLE(dpy, surface, numerator, denominator);
- }
-
- EGLClientBuffer GL_BINDING_CALL
-@@ -706,8 +706,8 @@
- if (strcmp(name, "eglGetFrameTimestampsANDROID") == 0)
- return reinterpret_cast<GLFunctionPointerType>(
- Mock_eglGetFrameTimestampsANDROID);
-- if (strcmp(name, "eglGetMscRateCHROMIUM") == 0)
-- return reinterpret_cast<GLFunctionPointerType>(Mock_eglGetMscRateCHROMIUM);
-+ if (strcmp(name, "eglGetMscRateANGLE") == 0)
-+ return reinterpret_cast<GLFunctionPointerType>(Mock_eglGetMscRateANGLE);
- if (strcmp(name, "eglGetNativeClientBufferANDROID") == 0)
- return reinterpret_cast<GLFunctionPointerType>(
- Mock_eglGetNativeClientBufferANDROID);
-diff --git a/ui/gl/egl_bindings_autogen_mock.h b/ui/gl/egl_bindings_autogen_mock.h
-index 06f1117..4b7eb01 100644
---- a/ui/gl/egl_bindings_autogen_mock.h
-+++ b/ui/gl/egl_bindings_autogen_mock.h
-@@ -131,11 +131,10 @@
- EGLint numTimestamps,
- EGLint* timestamps,
- EGLnsecsANDROID* values);
--static EGLBoolean GL_BINDING_CALL
--Mock_eglGetMscRateCHROMIUM(EGLDisplay dpy,
-- EGLSurface surface,
-- EGLint* numerator,
-- EGLint* denominator);
-+static EGLBoolean GL_BINDING_CALL Mock_eglGetMscRateANGLE(EGLDisplay dpy,
-+ EGLSurface surface,
-+ EGLint* numerator,
-+ EGLint* denominator);
- static EGLClientBuffer GL_BINDING_CALL Mock_eglGetNativeClientBufferANDROID(
- const struct AHardwareBuffer* ahardwarebuffer);
- static EGLBoolean GL_BINDING_CALL
-diff --git a/ui/gl/generate_bindings.py b/ui/gl/generate_bindings.py
-index 6a89047..01da79a 100755
---- a/ui/gl/generate_bindings.py
-+++ b/ui/gl/generate_bindings.py
-@@ -2452,9 +2452,9 @@
- ] }],
- 'arguments': 'EGLDisplay dpy, EGLSurface surface, EGLint timestamp', },
- { 'return_type': 'EGLBoolean',
-- 'versions': [{ 'name': 'eglGetMscRateCHROMIUM',
-+ 'versions': [{ 'name': 'eglGetMscRateANGLE',
- 'extensions': [
-- 'EGL_CHROMIUM_sync_control'
-+ 'EGL_ANGLE_sync_control_rate'
- ] }],
- 'arguments':
- 'EGLDisplay dpy, EGLSurface surface, '
-diff --git a/ui/gl/gl_bindings_api_autogen_egl.h b/ui/gl/gl_bindings_api_autogen_egl.h
-index 8628d7c..30b0ba80 100644
---- a/ui/gl/gl_bindings_api_autogen_egl.h
-+++ b/ui/gl/gl_bindings_api_autogen_egl.h
-@@ -111,10 +111,10 @@
- EGLBoolean eglGetFrameTimestampSupportedANDROIDFn(EGLDisplay dpy,
- EGLSurface surface,
- EGLint timestamp) override;
--EGLBoolean eglGetMscRateCHROMIUMFn(EGLDisplay dpy,
-- EGLSurface surface,
-- EGLint* numerator,
-- EGLint* denominator) override;
-+EGLBoolean eglGetMscRateANGLEFn(EGLDisplay dpy,
-+ EGLSurface surface,
-+ EGLint* numerator,
-+ EGLint* denominator) override;
- EGLClientBuffer eglGetNativeClientBufferANDROIDFn(
- const struct AHardwareBuffer* ahardwarebuffer) override;
- EGLBoolean eglGetNextFrameIdANDROIDFn(EGLDisplay dpy,
-diff --git a/ui/gl/gl_bindings_autogen_egl.cc b/ui/gl/gl_bindings_autogen_egl.cc
-index 2f1ed11..18444223 100644
---- a/ui/gl/gl_bindings_autogen_egl.cc
-+++ b/ui/gl/gl_bindings_autogen_egl.cc
-@@ -187,6 +187,8 @@
- gfx::HasExtension(extensions, "EGL_ANGLE_stream_producer_d3d_texture");
- ext.b_EGL_ANGLE_surface_d3d_texture_2d_share_handle = gfx::HasExtension(
- extensions, "EGL_ANGLE_surface_d3d_texture_2d_share_handle");
-+ ext.b_EGL_ANGLE_sync_control_rate =
-+ gfx::HasExtension(extensions, "EGL_ANGLE_sync_control_rate");
- ext.b_EGL_CHROMIUM_sync_control =
- gfx::HasExtension(extensions, "EGL_CHROMIUM_sync_control");
- ext.b_EGL_EXT_image_flush_external =
-@@ -278,9 +280,9 @@
- GetGLProcAddress("eglGetFrameTimestampSupportedANDROID"));
- }
-
-- if (ext.b_EGL_CHROMIUM_sync_control) {
-- fn.eglGetMscRateCHROMIUMFn = reinterpret_cast<eglGetMscRateCHROMIUMProc>(
-- GetGLProcAddress("eglGetMscRateCHROMIUM"));
-+ if (ext.b_EGL_ANGLE_sync_control_rate) {
-+ fn.eglGetMscRateANGLEFn = reinterpret_cast<eglGetMscRateANGLEProc>(
-+ GetGLProcAddress("eglGetMscRateANGLE"));
- }
-
- if (ext.b_EGL_ANDROID_get_native_client_buffer) {
-@@ -602,12 +604,11 @@
- timestamp);
- }
-
--EGLBoolean EGLApiBase::eglGetMscRateCHROMIUMFn(EGLDisplay dpy,
-- EGLSurface surface,
-- EGLint* numerator,
-- EGLint* denominator) {
-- return driver_->fn.eglGetMscRateCHROMIUMFn(dpy, surface, numerator,
-- denominator);
-+EGLBoolean EGLApiBase::eglGetMscRateANGLEFn(EGLDisplay dpy,
-+ EGLSurface surface,
-+ EGLint* numerator,
-+ EGLint* denominator) {
-+ return driver_->fn.eglGetMscRateANGLEFn(dpy, surface, numerator, denominator);
- }
-
- EGLClientBuffer EGLApiBase::eglGetNativeClientBufferANDROIDFn(
-@@ -1117,13 +1118,12 @@
- timestamp);
- }
-
--EGLBoolean TraceEGLApi::eglGetMscRateCHROMIUMFn(EGLDisplay dpy,
-- EGLSurface surface,
-- EGLint* numerator,
-- EGLint* denominator) {
-- TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglGetMscRateCHROMIUM")
-- return egl_api_->eglGetMscRateCHROMIUMFn(dpy, surface, numerator,
-- denominator);
-+EGLBoolean TraceEGLApi::eglGetMscRateANGLEFn(EGLDisplay dpy,
-+ EGLSurface surface,
-+ EGLint* numerator,
-+ EGLint* denominator) {
-+ TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglGetMscRateANGLE")
-+ return egl_api_->eglGetMscRateANGLEFn(dpy, surface, numerator, denominator);
- }
-
- EGLClientBuffer TraceEGLApi::eglGetNativeClientBufferANDROIDFn(
-@@ -1811,16 +1811,16 @@
- return result;
- }
-
--EGLBoolean LogEGLApi::eglGetMscRateCHROMIUMFn(EGLDisplay dpy,
-- EGLSurface surface,
-- EGLint* numerator,
-- EGLint* denominator) {
-- GL_SERVICE_LOG("eglGetMscRateCHROMIUM"
-+EGLBoolean LogEGLApi::eglGetMscRateANGLEFn(EGLDisplay dpy,
-+ EGLSurface surface,
-+ EGLint* numerator,
-+ EGLint* denominator) {
-+ GL_SERVICE_LOG("eglGetMscRateANGLE"
- << "(" << dpy << ", " << surface << ", "
- << static_cast<const void*>(numerator) << ", "
- << static_cast<const void*>(denominator) << ")");
- EGLBoolean result =
-- egl_api_->eglGetMscRateCHROMIUMFn(dpy, surface, numerator, denominator);
-+ egl_api_->eglGetMscRateANGLEFn(dpy, surface, numerator, denominator);
- GL_SERVICE_LOG("GL_RESULT: " << result);
- return result;
- }
-diff --git a/ui/gl/gl_bindings_autogen_egl.h b/ui/gl/gl_bindings_autogen_egl.h
-index 546e2c9..6cafd14 100644
---- a/ui/gl/gl_bindings_autogen_egl.h
-+++ b/ui/gl/gl_bindings_autogen_egl.h
-@@ -141,7 +141,7 @@
- EGLDisplay dpy,
- EGLSurface surface,
- EGLint timestamp);
--typedef EGLBoolean(GL_BINDING_CALL* eglGetMscRateCHROMIUMProc)(
-+typedef EGLBoolean(GL_BINDING_CALL* eglGetMscRateANGLEProc)(
- EGLDisplay dpy,
- EGLSurface surface,
- EGLint* numerator,
-@@ -296,6 +296,7 @@
- bool b_EGL_ANGLE_query_surface_pointer;
- bool b_EGL_ANGLE_stream_producer_d3d_texture;
- bool b_EGL_ANGLE_surface_d3d_texture_2d_share_handle;
-+ bool b_EGL_ANGLE_sync_control_rate;
- bool b_EGL_CHROMIUM_sync_control;
- bool b_EGL_EXT_image_flush_external;
- bool b_EGL_KHR_fence_sync;
-@@ -351,7 +352,7 @@
- eglGetFrameTimestampsANDROIDProc eglGetFrameTimestampsANDROIDFn;
- eglGetFrameTimestampSupportedANDROIDProc
- eglGetFrameTimestampSupportedANDROIDFn;
-- eglGetMscRateCHROMIUMProc eglGetMscRateCHROMIUMFn;
-+ eglGetMscRateANGLEProc eglGetMscRateANGLEFn;
- eglGetNativeClientBufferANDROIDProc eglGetNativeClientBufferANDROIDFn;
- eglGetNextFrameIdANDROIDProc eglGetNextFrameIdANDROIDFn;
- eglGetPlatformDisplayProc eglGetPlatformDisplayFn;
-@@ -512,10 +513,10 @@
- EGLDisplay dpy,
- EGLSurface surface,
- EGLint timestamp) = 0;
-- virtual EGLBoolean eglGetMscRateCHROMIUMFn(EGLDisplay dpy,
-- EGLSurface surface,
-- EGLint* numerator,
-- EGLint* denominator) = 0;
-+ virtual EGLBoolean eglGetMscRateANGLEFn(EGLDisplay dpy,
-+ EGLSurface surface,
-+ EGLint* numerator,
-+ EGLint* denominator) = 0;
- virtual EGLClientBuffer eglGetNativeClientBufferANDROIDFn(
- const struct AHardwareBuffer* ahardwarebuffer) = 0;
- virtual EGLBoolean eglGetNextFrameIdANDROIDFn(EGLDisplay dpy,
-@@ -685,8 +686,7 @@
- ::gl::g_current_egl_context->eglGetFrameTimestampsANDROIDFn
- #define eglGetFrameTimestampSupportedANDROID \
- ::gl::g_current_egl_context->eglGetFrameTimestampSupportedANDROIDFn
--#define eglGetMscRateCHROMIUM \
-- ::gl::g_current_egl_context->eglGetMscRateCHROMIUMFn
-+#define eglGetMscRateANGLE ::gl::g_current_egl_context->eglGetMscRateANGLEFn
- #define eglGetNativeClientBufferANDROID \
- ::gl::g_current_egl_context->eglGetNativeClientBufferANDROIDFn
- #define eglGetNextFrameIdANDROID \
-diff --git a/ui/gl/gl_enums_implementation_autogen.h b/ui/gl/gl_enums_implementation_autogen.h
-index d35439c..1209923b 100644
---- a/ui/gl/gl_enums_implementation_autogen.h
-+++ b/ui/gl/gl_enums_implementation_autogen.h
-@@ -829,10 +829,6 @@
- "GL_FILL_NV",
- },
- {
-- 0x1D00,
-- "GL_FLAT_CHROMIUM",
-- },
-- {
- 0x1E00,
- "GL_KEEP",
- },
-@@ -877,14 +873,6 @@
- "GL_FONT_NUM_GLYPH_INDICES_BIT_NV",
- },
- {
-- 0x2400,
-- "GL_EYE_LINEAR_CHROMIUM",
-- },
-- {
-- 0x2401,
-- "GL_OBJECT_LINEAR_CHROMIUM",
-- },
-- {
- 0x2600,
- "GL_NEAREST",
- },
-@@ -2053,10 +2041,6 @@
- "GL_MAX_CUBE_MAP_TEXTURE_SIZE",
- },
- {
-- 0x8576,
-- "GL_CONSTANT_CHROMIUM",
-- },
-- {
- 0x8589,
- "GL_SRC1_ALPHA_EXT",
- },
-@@ -4629,10 +4613,6 @@
- "GL_PATH_CLIENT_LENGTH_NV",
- },
- {
-- 0x907a,
-- "GL_PATH_MITER_LIMIT_CHROMIUM",
-- },
-- {
- 0x9080,
- "GL_PATH_FILL_MODE_NV",
- },
-@@ -4653,10 +4633,6 @@
- "GL_PATH_STROKE_MASK_NV",
- },
- {
-- 0x9086,
-- "GL_PATH_STROKE_BOUND_CHROMIUM",
-- },
-- {
- 0x9088,
- "GL_COUNT_UP_NV",
- },
-@@ -4965,14 +4941,6 @@
- "GL_CONTEXT_ROBUST_ACCESS_KHR",
- },
- {
-- 0x90a3,
-- "GL_SQUARE_CHROMIUM",
-- },
-- {
-- 0x90a4,
-- "GL_ROUND_CHROMIUM",
-- },
-- {
- 0x9100,
- "GL_TEXTURE_2D_MULTISAMPLE",
- },
-diff --git a/ui/gl/gl_mock_autogen_egl.h b/ui/gl/gl_mock_autogen_egl.h
-index bcdd2a3..ba2f95f 100644
---- a/ui/gl/gl_mock_autogen_egl.h
-+++ b/ui/gl/gl_mock_autogen_egl.h
-@@ -121,7 +121,7 @@
- EGLnsecsANDROID* values));
- MOCK_METHOD3(GetFrameTimestampSupportedANDROID,
- EGLBoolean(EGLDisplay dpy, EGLSurface surface, EGLint timestamp));
--MOCK_METHOD4(GetMscRateCHROMIUM,
-+MOCK_METHOD4(GetMscRateANGLE,
- EGLBoolean(EGLDisplay dpy,
- EGLSurface surface,
- EGLint* numerator,
-diff --git a/ui/gl/gl_surface_egl.cc b/ui/gl/gl_surface_egl.cc
-index 72268904..750f3ed 100644
---- a/ui/gl/gl_surface_egl.cc
-+++ b/ui/gl/gl_surface_egl.cc
-@@ -174,6 +174,7 @@
- bool g_egl_create_context_bind_generates_resource_supported = false;
- bool g_egl_create_context_webgl_compatability_supported = false;
- bool g_egl_sync_control_supported = false;
-+bool g_egl_sync_control_rate_supported = false;
- bool g_egl_window_fixed_size_supported = false;
- bool g_egl_surfaceless_context_supported = false;
- bool g_egl_surface_orientation_supported = false;
-@@ -266,8 +267,12 @@
- }
-
- bool GetMscRate(int32_t* numerator, int32_t* denominator) override {
-+ if (!g_egl_sync_control_rate_supported) {
-+ return false;
-+ }
-+
-- bool result = eglGetMscRateCHROMIUM(g_egl_display, surface_, numerator,
-- denominator) == EGL_TRUE;
-+ bool result = eglGetMscRateANGLE(g_egl_display, surface_, numerator,
-+ denominator) == EGL_TRUE;
- return result;
- }
-
-@@ -921,6 +920,8 @@
- g_egl_create_context_webgl_compatability_supported =
- HasEGLExtension("EGL_ANGLE_create_context_webgl_compatibility");
- g_egl_sync_control_supported = HasEGLExtension("EGL_CHROMIUM_sync_control");
-+ g_egl_sync_control_rate_supported =
-+ HasEGLExtension("EGL_ANGLE_sync_control_rate");
- g_egl_window_fixed_size_supported =
- HasEGLExtension("EGL_ANGLE_window_fixed_size");
- g_egl_surface_orientation_supported =
-@@ -1036,6 +1037,7 @@
- g_egl_create_context_bind_generates_resource_supported = false;
- g_egl_create_context_webgl_compatability_supported = false;
- g_egl_sync_control_supported = false;
-+ g_egl_sync_control_rate_supported = false;
- g_egl_window_fixed_size_supported = false;
- g_egl_surface_orientation_supported = false;
- g_egl_surfaceless_context_supported = false;
diff --git a/fix-intel-vaapi-wayland.patch b/fix-intel-vaapi-wayland.patch
new file mode 100644
index 000000000000..8e87b1084221
--- /dev/null
+++ b/fix-intel-vaapi-wayland.patch
@@ -0,0 +1,21 @@
+--- a/ui/gl/gl_image_native_pixmap.cc
++++ b/ui/gl/gl_image_native_pixmap.cc
+@@ -288,6 +288,8 @@
+ std::move(scoped_fd));
+ }
+
++ handle.planes[0].size = size_.GetArea();
++
+ return handle;
+ #endif // !defined(OS_FUCHSIA)
+ }
+--- a/gpu/command_buffer/service/error_state.cc
++++ b/gpu/command_buffer/service/error_state.cc
+@@ -115,6 +115,8 @@
+ // buffer.
+ error = GL_NO_ERROR;
+ }
++ if (error == GL_INVALID_ENUM)
++ error = GL_NO_ERROR;
+ return error;
+ }
diff --git a/flags.archlinux.gn b/flags.archlinux.gn
deleted file mode 100644
index 9cbb9aa1e7b0..000000000000
--- a/flags.archlinux.gn
+++ /dev/null
@@ -1,28 +0,0 @@
-custom_toolchain="//build/toolchain/linux/unbundle:default"
-host_toolchain="//build/toolchain/linux/unbundle:default"
-is_official_build=true
-ffmpeg_branding="Chrome"
-proprietary_codecs=true
-rtc_use_pipewire=true
-link_pulseaudio=true
-use_gnome_keyring=false
-use_sysroot=false
-linux_use_bundled_binutils=false
-use_custom_libcxx=false
-enable_swiftshader=false
-use_vaapi=true
-fatal_linker_warnings=false
-is_clang=true
-use_kerberos=false
-use_libjpeg_turbo=true
-use_pulseaudio=true
-use_system_freetype=true
-use_system_harfbuzz=true
-use_system_lcms2=true
-use_system_libjpeg=true
-use_system_zlib=true
-icu_use_data_file=false
-# symbol_level = 2 causes OBS to run out of space
-symbol_level=0
-blink_symbol_level=0
-#exclude_unwind_tables=false
diff --git a/include-memory-header-to-get-the-definition-of-std-u.patch b/include-memory-header-to-get-the-definition-of-std-u.patch
new file mode 100644
index 000000000000..eb30ad2437f1
--- /dev/null
+++ b/include-memory-header-to-get-the-definition-of-std-u.patch
@@ -0,0 +1,32 @@
+From 40d994e4aa2e4d5077c1810e4623549618a19c05 Mon Sep 17 00:00:00 2001
+From: Piotr Tworek <ptworek@vewd.com>
+Date: Mon, 27 Apr 2020 16:31:46 +0000
+Subject: [PATCH] Include "memory" header to get the definition of
+ std::unique_ptr.
+
+Right now the code im the affected fails to build when using libstdc++
+instead of bundled libcxx. Apparently libcxx pulls the necessary header
+indirectly.
+
+Change-Id: Ie5e86f228434ab16d622ae7a912d9ce607258931
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2164645
+Reviewed-by: Jochen Eisinger <jochen@chromium.org>
+Commit-Queue: Jochen Eisinger <jochen@chromium.org>
+Cr-Commit-Position: refs/heads/master@{#762881}
+---
+ .../blink/renderer/core/html/trust_token_attribute_parsing.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/third_party/blink/renderer/core/html/trust_token_attribute_parsing.h b/third_party/blink/renderer/core/html/trust_token_attribute_parsing.h
+index f5a7ab03892..ef19cfaf680 100644
+--- a/third_party/blink/renderer/core/html/trust_token_attribute_parsing.h
++++ b/third_party/blink/renderer/core/html/trust_token_attribute_parsing.h
+@@ -5,6 +5,8 @@
+ #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_HTML_TRUST_TOKEN_ATTRIBUTE_PARSING_H_
+ #define THIRD_PARTY_BLINK_RENDERER_CORE_HTML_TRUST_TOKEN_ATTRIBUTE_PARSING_H_
+
++#include <memory>
++
+ #include "base/optional.h"
+ #include "services/network/public/mojom/trust_tokens.mojom-blink-forward.h"
+ #include "third_party/blink/renderer/core/core_export.h"
diff --git a/iwyu-std-numeric_limits-is-defined-in-limits.patch b/iwyu-std-numeric_limits-is-defined-in-limits.patch
new file mode 100644
index 000000000000..e270242afd86
--- /dev/null
+++ b/iwyu-std-numeric_limits-is-defined-in-limits.patch
@@ -0,0 +1,29 @@
+From 74f76a6be385ef056b0be2362c32c728141cca16 Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Fri, 17 Apr 2020 16:04:12 +0000
+Subject: [PATCH] IWYU: std::numeric_limits is defined in limits
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Change-Id: Ifbc379adc5bb7242c21e7da0bcfc28f49e4dd06f
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2153111
+Reviewed-by: François Doray <fdoray@chromium.org>
+Commit-Queue: François Doray <fdoray@chromium.org>
+Cr-Commit-Position: refs/heads/master@{#760075}
+---
+ .../graph/policies/background_tab_loading_policy_helpers.cc | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.cc b/chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.cc
+index 4881c010bb9..593501d16a7 100644
+--- a/chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.cc
++++ b/chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.cc
+@@ -5,6 +5,7 @@
+ #include "chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.h"
+
+ #include <math.h>
++#include <limits>
+
+ #include "base/logging.h"
+
diff --git a/libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch b/libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch
new file mode 100644
index 000000000000..5e9d37aae54f
--- /dev/null
+++ b/libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch
@@ -0,0 +1,62 @@
+From aeef68888d4c00b69facead2b934095a8cd17329 Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Mon, 20 Apr 2020 18:21:43 +0000
+Subject: [PATCH] libstdc++: fix incomplete-type in AXTree for
+ NodeSetSizePosInSetInfo
+
+has only forward declaration of NodeSetSizePosInSetInfo. Therefore,
+move declaration from ax_tree.cc.
+
+std: :unordered_map<T, U> requires U to be fully declared. ax_tree.h
+Bug: 957519
+Change-Id: Ic1f4bf3ebfea229ece84251e46d4461b31873868
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2132403
+Reviewed-by: David Tseng <dtseng@chromium.org>
+Commit-Queue: David Tseng <dtseng@chromium.org>
+Cr-Commit-Position: refs/heads/master@{#760588}
+---
+ ui/accessibility/ax_tree.cc | 10 ++--------
+ ui/accessibility/ax_tree.h | 9 ++++++++-
+ 2 files changed, 10 insertions(+), 9 deletions(-)
+
+diff --git a/ui/accessibility/ax_tree.cc b/ui/accessibility/ax_tree.cc
+index 7b8d9b1b161..e9154028d66 100644
+--- a/ui/accessibility/ax_tree.cc
++++ b/ui/accessibility/ax_tree.cc
+@@ -567,14 +567,8 @@ struct AXTreeUpdateState {
+ const AXTree& tree;
+ };
+
+-struct AXTree::NodeSetSizePosInSetInfo {
+- NodeSetSizePosInSetInfo() = default;
+- ~NodeSetSizePosInSetInfo() = default;
+-
+- int32_t pos_in_set = 0;
+- int32_t set_size = 0;
+- base::Optional<int> lowest_hierarchical_level;
+-};
++AXTree::NodeSetSizePosInSetInfo::NodeSetSizePosInSetInfo() = default;
++AXTree::NodeSetSizePosInSetInfo::~NodeSetSizePosInSetInfo() = default;
+
+ struct AXTree::OrderedSetContent {
+ explicit OrderedSetContent(const AXNode* ordered_set = nullptr)
+diff --git a/ui/accessibility/ax_tree.h b/ui/accessibility/ax_tree.h
+index a51ca8de4c8..8c1c57517ac 100644
+--- a/ui/accessibility/ax_tree.h
++++ b/ui/accessibility/ax_tree.h
+@@ -328,7 +328,14 @@ class AX_EXPORT AXTree : public AXNode::OwnerTree {
+ bool enable_extra_mac_nodes_ = false;
+
+ // Contains pos_in_set and set_size data for an AXNode.
+- struct NodeSetSizePosInSetInfo;
++ struct NodeSetSizePosInSetInfo {
++ NodeSetSizePosInSetInfo();
++ ~NodeSetSizePosInSetInfo();
++
++ int32_t pos_in_set = 0;
++ int32_t set_size = 0;
++ base::Optional<int> lowest_hierarchical_level;
++ };
+
+ // Represents the content of an ordered set which includes the ordered set
+ // items and the ordered set container if it exists.
diff --git a/make-some-of-blink-custom-iterators-STL-compatible.patch b/make-some-of-blink-custom-iterators-STL-compatible.patch
new file mode 100644
index 000000000000..30cbdefcc65f
--- /dev/null
+++ b/make-some-of-blink-custom-iterators-STL-compatible.patch
@@ -0,0 +1,95 @@
+From d3cabbc7321d349a9bffda482df5afc0d4df1ac2 Mon Sep 17 00:00:00 2001
+From: Piotr Tworek <ptworek@vewd.com>
+Date: Thu, 30 Apr 2020 21:33:47 +0000
+Subject: [PATCH] Make some of blink custom iterators STL compatible.
+
+Blink has recently started using functions like std::any_of with some of
+the custom iterators it provides. On Linux this works in the default
+setup using libcxx, but fails with even the most recent versions of
+libstdc++. In all cases the error message (text in bug report) complains
+about lack of matching std::__iterator_category definition.
+
+From what I understand the error message is basically saying those
+iterators are not STL compatible due to missing traits as described
+in https://en.cppreference.com/w/cpp/iterator/iterator_traits. Such
+traits are provided by custom iterators defined in //base, or //cc.
+
+This patch adds the necessary traits to iterators that are currently
+affected by this problem.
+
+Bug: 1076869
+Change-Id: I9950a7100c32499ba96647317fa70b87dc22eaf9
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2174199
+Reviewed-by: Kentaro Hara <haraken@chromium.org>
+Commit-Queue: Piotr Tworek <ptworek@vewd.com>
+Cr-Commit-Position: refs/heads/master@{#764426}
+---
+ .../core/layout/ng/ng_physical_container_fragment.h | 6 ++++++
+ .../blink/renderer/platform/wtf/hash_iterators.h | 12 ++++++++++++
+ third_party/blink/renderer/platform/wtf/hash_table.h | 6 ++++++
+ 3 files changed, 24 insertions(+)
+
+diff --git a/third_party/blink/renderer/core/layout/ng/ng_physical_container_fragment.h b/third_party/blink/renderer/core/layout/ng/ng_physical_container_fragment.h
+index 1256e77c146..8b93107f2fc 100644
+--- a/third_party/blink/renderer/core/layout/ng/ng_physical_container_fragment.h
++++ b/third_party/blink/renderer/core/layout/ng/ng_physical_container_fragment.h
+@@ -38,6 +38,12 @@ class CORE_EXPORT NGPhysicalContainerFragment : public NGPhysicalFragment {
+ STACK_ALLOCATED();
+
+ public:
++ using iterator_category = std::bidirectional_iterator_tag;
++ using value_type = NGLink;
++ using difference_type = ptrdiff_t;
++ using pointer = value_type*;
++ using reference = value_type&;
++
+ ConstIterator(const NGLink* current) : current_(current) {}
+
+ const NGLink& operator*() const { return *PostLayoutOrCurrent(); }
+diff --git a/third_party/blink/renderer/platform/wtf/hash_iterators.h b/third_party/blink/renderer/platform/wtf/hash_iterators.h
+index f8e66e6be85..6003d02c509 100644
+--- a/third_party/blink/renderer/platform/wtf/hash_iterators.h
++++ b/third_party/blink/renderer/platform/wtf/hash_iterators.h
+@@ -53,6 +53,12 @@ struct HashTableConstIteratorAdapter<HashTableType,
+ typedef HashTableConstValuesIterator<HashTableType, KeyType, MappedType>
+ ValuesIterator;
+
++ using iterator_category = std::bidirectional_iterator_tag;
++ using value_type = HashTableType;
++ using difference_type = ptrdiff_t;
++ using pointer = value_type*;
++ using reference = value_type&;
++
+ HashTableConstIteratorAdapter() = default;
+ HashTableConstIteratorAdapter(
+ const typename HashTableType::const_iterator& impl)
+@@ -94,6 +100,12 @@ struct HashTableIteratorAdapter<HashTableType,
+ typedef HashTableValuesIterator<HashTableType, KeyType, MappedType>
+ ValuesIterator;
+
++ using iterator_category = std::bidirectional_iterator_tag;
++ using value_type = HashTableType;
++ using difference_type = ptrdiff_t;
++ using pointer = value_type*;
++ using reference = value_type&;
++
+ HashTableIteratorAdapter() = default;
+ HashTableIteratorAdapter(const typename HashTableType::iterator& impl)
+ : impl_(impl) {}
+diff --git a/third_party/blink/renderer/platform/wtf/hash_table.h b/third_party/blink/renderer/platform/wtf/hash_table.h
+index f596fb5d41e..5a4468d6bd1 100644
+--- a/third_party/blink/renderer/platform/wtf/hash_table.h
++++ b/third_party/blink/renderer/platform/wtf/hash_table.h
+@@ -2204,6 +2204,12 @@ struct HashTableConstIteratorAdapter {
+ STACK_ALLOCATED();
+
+ public:
++ using iterator_category = std::bidirectional_iterator_tag;
++ using value_type = HashTableType;
++ using difference_type = ptrdiff_t;
++ using pointer = value_type*;
++ using reference = value_type&;
++
+ HashTableConstIteratorAdapter() = default;
+ HashTableConstIteratorAdapter(
+ const typename HashTableType::const_iterator& impl)
diff --git a/rebuild-Linux-frame-button-cache-when-activation.patch b/rebuild-Linux-frame-button-cache-when-activation.patch
deleted file mode 100644
index 40764b3ba7ab..000000000000
--- a/rebuild-Linux-frame-button-cache-when-activation.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From d10f885b9327399be9348b780967ebd6b7f2c4bc Mon Sep 17 00:00:00 2001
-From: Tom Anderson <thomasanderson@chromium.org>
-Date: Fri, 7 Feb 2020 22:44:54 +0000
-Subject: [PATCH] Rebuild Linux frame button cache when activation state
- changes
-
-This fixes an issue where the frame buttons would always render in an
-inactive state on Linux (see repro steps in bug 1049258).
-
-Bug: 1049258
-R=sky
-CC=pkasting
-
-Change-Id: Ic5af33199003e1d1cdf6cedf506e32388ea11fa9
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2044538
-Auto-Submit: Thomas Anderson <thomasanderson@chromium.org>
-Commit-Queue: Scott Violet <sky@chromium.org>
-Reviewed-by: Scott Violet <sky@chromium.org>
-Cr-Commit-Position: refs/heads/master@{#739585}
----
- .../ui/views/frame/desktop_linux_browser_frame_view.cc | 6 +++---
- .../desktop_aura/desktop_window_tree_host_platform.cc | 3 +++
- 2 files changed, 6 insertions(+), 3 deletions(-)
-
-diff --git a/chrome/browser/ui/views/frame/desktop_linux_browser_frame_view.cc b/chrome/browser/ui/views/frame/desktop_linux_browser_frame_view.cc
-index 954e776057f..4f579955675 100644
---- a/chrome/browser/ui/views/frame/desktop_linux_browser_frame_view.cc
-+++ b/chrome/browser/ui/views/frame/desktop_linux_browser_frame_view.cc
-@@ -22,13 +22,13 @@ DesktopLinuxBrowserFrameView::DesktopLinuxBrowserFrameView(
- : OpaqueBrowserFrameView(frame, browser_view, layout),
- nav_button_provider_(std::move(nav_button_provider)) {}
-
--DesktopLinuxBrowserFrameView::~DesktopLinuxBrowserFrameView() {}
-+DesktopLinuxBrowserFrameView::~DesktopLinuxBrowserFrameView() = default;
-
- void DesktopLinuxBrowserFrameView::Layout() {
- // Calling MaybeUpdateCachedFrameButtonImages() from Layout() is sufficient to
- // catch all cases that could update the appearance, since
-- // DesktopWindowTreeHostPlatform::OnWindowStateChanged() does a layout any
-- // time any properties change.
-+ // DesktopWindowTreeHostPlatform::On{Window,Activation}StateChanged() does a
-+ // layout any time the maximized and activation state changes, respectively.
- MaybeUpdateCachedFrameButtonImages();
- OpaqueBrowserFrameView::Layout();
- }
-diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc
-index 9c695d8e5b1..9662f19aa90 100644
---- a/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc
-+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc
-@@ -677,9 +677,12 @@ void DesktopWindowTreeHostPlatform::OnCloseRequest() {
- }
-
- void DesktopWindowTreeHostPlatform::OnActivationChanged(bool active) {
-+ if (is_active_ == active)
-+ return;
- is_active_ = active;
- aura::WindowTreeHostPlatform::OnActivationChanged(active);
- desktop_native_widget_aura_->HandleActivationChanged(active);
-+ ScheduleRelayout();
- }
-
- base::Optional<gfx::Size>
diff --git a/rename-Relayout-in-DesktopWindowTreeHostPlatform.patch b/rename-Relayout-in-DesktopWindowTreeHostPlatform.patch
deleted file mode 100644
index eda3cbdbaaf3..000000000000
--- a/rename-Relayout-in-DesktopWindowTreeHostPlatform.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From 5a2cd2409c7d65c019ad9f4595a4e85315857ac4 Mon Sep 17 00:00:00 2001
-From: Tom Anderson <thomasanderson@chromium.org>
-Date: Mon, 3 Feb 2020 23:18:46 +0000
-Subject: [PATCH] Rename Relayout() in DesktopWindowTreeHostPlatform to
- ScheduleRelayout()
-
-R=sky
-
-Bug: None
-Change-Id: I680cafd25935e59a280e3b2baac754d3d5f13a35
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2036553
-Auto-Submit: Thomas Anderson <thomasanderson@chromium.org>
-Reviewed-by: Scott Violet <sky@chromium.org>
-Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
-Cr-Commit-Position: refs/heads/master@{#737974}
----
- .../desktop_aura/desktop_window_tree_host_platform.cc | 6 +++---
- .../widget/desktop_aura/desktop_window_tree_host_platform.h | 2 +-
- 2 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc
-index 6c00d49eb3f..9c695d8e5b1 100644
---- a/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc
-+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc
-@@ -556,7 +556,7 @@ void DesktopWindowTreeHostPlatform::SetFullscreen(bool fullscreen) {
- DCHECK_EQ(fullscreen, IsFullscreen());
-
- if (IsFullscreen() == fullscreen)
-- Relayout();
-+ ScheduleRelayout();
- // Else: the widget will be relaid out either when the window bounds change
- // or when |platform_window|'s fullscreen state changes.
- }
-@@ -669,7 +669,7 @@ void DesktopWindowTreeHostPlatform::OnWindowStateChanged(
- // Now that we have different window properties, we may need to relayout the
- // window. (The windows code doesn't need this because their window change is
- // synchronous.)
-- Relayout();
-+ ScheduleRelayout();
- }
-
- void DesktopWindowTreeHostPlatform::OnCloseRequest() {
-@@ -712,7 +712,7 @@ gfx::Rect DesktopWindowTreeHostPlatform::ToPixelRect(
- return gfx::ToEnclosingRect(rect_in_pixels);
- }
-
--void DesktopWindowTreeHostPlatform::Relayout() {
-+void DesktopWindowTreeHostPlatform::ScheduleRelayout() {
- Widget* widget = native_widget_delegate_->AsWidget();
- NonClientView* non_client_view = widget->non_client_view();
- // non_client_view may be NULL, especially during creation.
-diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.h b/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.h
-index 89beb8d2245..75a401e02a7 100644
---- a/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.h
-+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.h
-@@ -129,7 +129,7 @@ class VIEWS_EXPORT DesktopWindowTreeHostPlatform
- gfx::Rect ToPixelRect(const gfx::Rect& rect_in_dip) const;
-
- private:
-- void Relayout();
-+ void ScheduleRelayout();
-
- Widget* GetWidget();
- const Widget* GetWidget() const;
diff --git a/icu67.patch b/v8-remove-soon-to-be-removed-getAllFieldPositions.patch
index bcfcb187b3bd..41d1aced2607 100644
--- a/icu67.patch
+++ b/v8-remove-soon-to-be-removed-getAllFieldPositions.patch
@@ -1,32 +1,25 @@
-From 2b107e7670ffb43719a66ee4a55ab408a5dcf2a5 Mon Sep 17 00:00:00 2001
-From: Ujjwal Sharma <ryzokuken@disroot.org>
-Date: Wed, 22 Apr 2020 12:20:17 +0530
-Subject: [PATCH] deps: V8: backport 3f8dc4b2e5ba
+From 3f8dc4b2e5baf77b463334c769af85b79d8c1463 Mon Sep 17 00:00:00 2001
+From: Frank Tang <ftang@chromium.org>
+Date: Fri, 3 Apr 2020 23:13:54 -0700
+Subject: [PATCH] [intl] Remove soon-to-be removed getAllFieldPositions
-Original commit message:
+Needed to land ICU67.1 soon.
- [intl] Remove soon-to-be removed getAllFieldPositions
-
- Needed to land ICU67.1 soon.
-
- Bug: v8:10393
- Change-Id: I3c7737ca600d6ccfdc46ffaddfb318ce60bc7618
- Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2136489
- Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
- Commit-Queue: Frank Tang <ftang@chromium.org>
- Cr-Commit-Position: refs/heads/master@{#67027}
-
-Refs: https://github.com/v8/v8/commit/3f8dc4b2e5baf77b463334c769af85b79d8c1463
+Bug: v8:10393
+Change-Id: I3c7737ca600d6ccfdc46ffaddfb318ce60bc7618
+Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2136489
+Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
+Commit-Queue: Frank Tang <ftang@chromium.org>
+Cr-Commit-Position: refs/heads/master@{#67027}
---
- common.gypi | 2 +-
- deps/v8/src/objects/js-number-format.cc | 72 +++++++++++++------------
- 2 files changed, 38 insertions(+), 36 deletions(-)
+ src/objects/js-number-format.cc | 77 +++++++++++++++++----------------
+ 1 file changed, 39 insertions(+), 38 deletions(-)
-diff --git a/deps/v8/src/objects/js-number-format.cc b/deps/v8/src/objects/js-number-format.cc
-index 92d3e2fb82e..ced408aa173 100644
---- a/deps/v8/src/objects/js-number-format.cc
-+++ b/deps/v8/src/objects/js-number-format.cc
-@@ -1197,42 +1197,31 @@ MaybeHandle<JSNumberFormat> JSNumberFormat::New(Isolate* isolate,
+diff --git a/src/objects/js-number-format.cc b/src/objects/js-number-format.cc
+index ad831c5c36..bcd44031d5 100644
+--- a/src/objects/js-number-format.cc
++++ b/src/objects/js-number-format.cc
+@@ -1241,44 +1241,33 @@ MaybeHandle<JSNumberFormat> JSNumberFormat::New(Isolate* isolate,
}
namespace {
@@ -50,7 +43,9 @@ index 92d3e2fb82e..ced408aa173 100644
+ *formatted = number_format.formatDecimal(
{big_int_string->ToCString().get(), big_int_string->length()}, status);
} else {
- double number = numeric_obj->Number();
+ double number = numeric_obj->IsNaN()
+ ? std::numeric_limits<double>::quiet_NaN()
+ : numeric_obj->Number();
- formatted = number_format.formatDouble(number, status);
+ *formatted = number_format.formatDouble(number, status);
}
@@ -63,21 +58,21 @@ index 92d3e2fb82e..ced408aa173 100644
- }
- if (fp_iter) {
- formatted.getAllFieldPositions(*fp_iter, status);
-+ THROW_NEW_ERROR_RETURN_VALUE(
-+ isolate, NewTypeError(MessageTemplate::kIcuError), Nothing<bool>());
- }
+- }
- icu::UnicodeString result = formatted.toString(status);
- if (U_FAILURE(status)) {
- THROW_NEW_ERROR_RETURN_VALUE(isolate,
- NewTypeError(MessageTemplate::kIcuError),
- Nothing<icu::UnicodeString>());
-- }
++ THROW_NEW_ERROR_RETURN_VALUE(
++ isolate, NewTypeError(MessageTemplate::kIcuError), Nothing<bool>());
+ }
- return Just(result);
+ return Just(true);
}
} // namespace
-@@ -1243,10 +1232,16 @@ MaybeHandle<String> JSNumberFormat::FormatNumeric(
+@@ -1289,10 +1278,16 @@ MaybeHandle<String> JSNumberFormat::FormatNumeric(
Handle<Object> numeric_obj) {
DCHECK(numeric_obj->IsNumeric());
@@ -97,7 +92,7 @@ index 92d3e2fb82e..ced408aa173 100644
}
namespace {
-@@ -1359,12 +1354,18 @@ std::vector<NumberFormatSpan> FlattenRegionsToParts(
+@@ -1405,12 +1400,18 @@ std::vector<NumberFormatSpan> FlattenRegionsToParts(
}
namespace {
@@ -119,7 +114,7 @@ index 92d3e2fb82e..ced408aa173 100644
int index = start_index;
if (length == 0) return Just(index);
-@@ -1373,13 +1374,14 @@ Maybe<int> ConstructParts(Isolate* isolate, const icu::UnicodeString& formatted,
+@@ -1419,13 +1420,14 @@ Maybe<int> ConstructParts(Isolate* isolate, const icu::UnicodeString& formatted,
// other region covers some part of the formatted string. It's possible
// there's another field with exactly the same begin and end as this backdrop,
// in which case the backdrop's field_id of -1 will give it lower priority.
@@ -139,7 +134,7 @@ index 92d3e2fb82e..ced408aa173 100644
}
}
-@@ -1401,7 +1403,7 @@ Maybe<int> ConstructParts(Isolate* isolate, const icu::UnicodeString& formatted,
+@@ -1447,7 +1449,7 @@ Maybe<int> ConstructParts(Isolate* isolate, const icu::UnicodeString& formatted,
Handle<String> substring;
ASSIGN_RETURN_ON_EXCEPTION_VALUE(
isolate, substring,
@@ -148,7 +143,7 @@ index 92d3e2fb82e..ced408aa173 100644
Nothing<int>());
Intl::AddElement(isolate, result, index, field_type_string, substring);
++index;
-@@ -1421,14 +1423,14 @@ MaybeHandle<JSArray> JSNumberFormat::FormatToParts(
+@@ -1467,20 +1469,19 @@ MaybeHandle<JSArray> JSNumberFormat::FormatToParts(
number_format->icu_number_formatter().raw();
CHECK_NOT_NULL(fmt);
@@ -159,11 +154,19 @@ index 92d3e2fb82e..ced408aa173 100644
+ Maybe<bool> maybe_format =
+ IcuFormatNumber(isolate, *fmt, numeric_obj, &formatted);
MAYBE_RETURN(maybe_format, Handle<JSArray>());
+-
+ UErrorCode status = U_ZERO_ERROR;
++
+ bool style_is_unit =
+ Style::UNIT == StyleFromSkeleton(fmt->toSkeleton(status));
+ CHECK(U_SUCCESS(status));
Handle<JSArray> result = factory->NewJSArray(0);
- Maybe<int> maybe_format_to_parts = ConstructParts(
-- isolate, maybe_format.FromJust(), &fp_iter, result, 0, numeric_obj,
-+ isolate, &formatted, result, 0, numeric_obj,
- number_format->style() == JSNumberFormat::Style::UNIT);
+- Maybe<int> maybe_format_to_parts =
+- ConstructParts(isolate, maybe_format.FromJust(), &fp_iter, result, 0,
+- numeric_obj, style_is_unit);
++ Maybe<int> maybe_format_to_parts = ConstructParts(
++ isolate, &formatted, result, 0, numeric_obj, style_is_unit);
MAYBE_RETURN(maybe_format_to_parts, Handle<JSArray>());
+ return result;
diff --git a/vaapi-build-fix.patch b/vaapi-build-fix.patch
deleted file mode 100644
index 2b7851acecbb..000000000000
--- a/vaapi-build-fix.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 5b2ff215473e0526b5b24aeff4ad90d369b21c75 Mon Sep 17 00:00:00 2001
-From: Julien Isorce <julien.isorce@chromium.org>
-Date: Wed, 05 Feb 2020 17:59:59 +0000
-Subject: [PATCH] Fix vaapi with GLX
-
-The signature of ui's gl::GLImageGLX has changed a little bit
-since "mplement GpuMemoryBuffers for EGL and GLX":
- https://chromium-review.googlesource.com/c/chromium/src/+/1984712
-
-Bug: 1031269
-Test: build with use_vaapi=true and run with --use-gl=desktop, see
-Change-Id: I80b07294b9abdfa8233aaf79f7d9ec4c58117090
-https: //chromium.googlesource.com/chromium/src.git/+/refs/heads/master/docs/gpu/vaapi.md#vaapi-on-linux
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2036494
-Reviewed-by: Thomas Anderson <thomasanderson@chromium.org>
-Reviewed-by: Miguel Casas <mcasas@chromium.org>
-Commit-Queue: Julien Isorce <julien.isorce@chromium.org>
-Cr-Commit-Position: refs/heads/master@{#738595}
----
-
-diff --git a/media/gpu/vaapi/vaapi_picture_tfp.cc b/media/gpu/vaapi/vaapi_picture_tfp.cc
-index 227c31b..b42620d 100644
---- a/media/gpu/vaapi/vaapi_picture_tfp.cc
-+++ b/media/gpu/vaapi/vaapi_picture_tfp.cc
-@@ -57,7 +57,7 @@
- if (make_context_current_cb_ && !make_context_current_cb_.Run())
- return false;
-
-- glx_image_ = new gl::GLImageGLX(size_, GL_RGB);
-+ glx_image_ = new gl::GLImageGLX(size_, gfx::BufferFormat::BGRX_8888);
- if (!glx_image_->Initialize(x_pixmap_)) {
- // x_pixmap_ will be freed in the destructor.
- DLOG(ERROR) << "Failed creating a GLX Pixmap for TFP";
---- a/media/mojo/services/gpu_mojo_media_client.cc 2020-04-02 21:11:34.000000000 -0700
-+++ b/media/mojo/services/gpu_mojo_media_client.cc 2020-04-09 00:44:58.871366432 -0700
-@@ -158,6 +158,7 @@
- *d3d11_supported_configs_;
-
- #elif BUILDFLAG(USE_CHROMEOS_MEDIA_ACCELERATION)
-+#if defined(OS_CHROMEOS)
- if (base::FeatureList::IsEnabled(kChromeosVideoDecoder)) {
- if (!cros_supported_configs_) {
- cros_supported_configs_ =
-@@ -167,6 +168,7 @@
- *cros_supported_configs_;
- return supported_config_map;
- }
-+#endif //defined(OS_CHROMEOS)
- #endif
-
- auto& default_configs =