From 9f1dcf765d49007b81103b65143abb0523e467b6 Mon Sep 17 00:00:00 2001 From: Seppia Date: Mon, 1 Jun 2020 12:11:04 +0200 Subject: Update to version 83.0.4103.61-1 --- .SRCINFO | 68 +-- PKGBUILD | 200 ++++--- ...-algorithm-header-in-crx_install_error.cc.patch | 29 + ...le-destruction-of-ServiceWorkerObjectHost.patch | 138 +++++ chromium-83-gcc-10.patch | 64 +++ chromium-widevine.patch | 13 - chromium.install | 16 + eglGetMscRateCHROMIUM.patch | 604 --------------------- fix-intel-vaapi-wayland.patch | 21 + flags.archlinux.gn | 32 -- icu67.patch | 169 ------ ...ory-header-to-get-the-definition-of-std-u.patch | 32 ++ iwyu-std-numeric_limits-is-defined-in-limits.patch | 29 + ...-incomplete-type-in-AXTree-for-NodeSetSiz.patch | 62 +++ ...-of-blink-custom-iterators-STL-compatible.patch | 95 ++++ ...-Linux-frame-button-cache-when-activation.patch | 62 --- ...Relayout-in-DesktopWindowTreeHostPlatform.patch | 64 --- ...e-soon-to-be-removed-getAllFieldPositions.patch | 172 ++++++ vaapi-build-fix.patch | 51 -- 19 files changed, 809 insertions(+), 1112 deletions(-) create mode 100644 add-missing-algorithm-header-in-crx_install_error.cc.patch create mode 100644 avoid-double-destruction-of-ServiceWorkerObjectHost.patch create mode 100644 chromium-83-gcc-10.patch delete mode 100644 chromium-widevine.patch create mode 100644 chromium.install delete mode 100644 eglGetMscRateCHROMIUM.patch create mode 100644 fix-intel-vaapi-wayland.patch delete mode 100644 flags.archlinux.gn delete mode 100644 icu67.patch create mode 100644 include-memory-header-to-get-the-definition-of-std-u.patch create mode 100644 iwyu-std-numeric_limits-is-defined-in-limits.patch create mode 100644 libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch create mode 100644 make-some-of-blink-custom-iterators-STL-compatible.patch delete mode 100644 rebuild-Linux-frame-button-cache-when-activation.patch delete mode 100644 rename-Relayout-in-DesktopWindowTreeHostPlatform.patch create mode 100644 v8-remove-soon-to-be-removed-getAllFieldPositions.patch delete mode 100644 vaapi-build-fix.patch diff --git a/.SRCINFO b/.SRCINFO index 54d70bb..ef48d6f 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,8 +1,9 @@ pkgbase = ungoogled-chromium pkgdesc = A lightweight approach to removing Google web service dependency - pkgver = 81.0.4044.138 + pkgver = 83.0.4103.61 pkgrel = 1 url = https://github.com/Eloston/ungoogled-chromium + install = chromium.install arch = x86_64 license = BSD makedepends = python @@ -13,11 +14,12 @@ pkgbase = ungoogled-chromium makedepends = ninja makedepends = nodejs makedepends = git + makedepends = libpipewire02 makedepends = clang makedepends = lld makedepends = gn - makedepends = llvm - makedepends = quilt + makedepends = java-runtime-headless + makedepends = python2-setuptools depends = gtk3 depends = nss depends = alsa-lib @@ -25,7 +27,7 @@ pkgbase = ungoogled-chromium depends = libxss depends = libcups depends = libgcrypt - depends = ttf-font + depends = ttf-liberation depends = systemd depends = dbus depends = libpulse @@ -34,8 +36,6 @@ pkgbase = ungoogled-chromium depends = libva depends = desktop-file-utils depends = hicolor-icon-theme - depends = jsoncpp - depends = openjpeg2 depends = icu depends = libxml2 depends = fontconfig @@ -53,42 +53,44 @@ pkgbase = ungoogled-chromium depends = freetype2 depends = opus optdepends = pepper-flash: support for Flash content + optdepends = libpipewire02: WebRTC desktop sharing under Wayland optdepends = kdialog: needed for file dialogs in KDE - optdepends = gnome-keyring: for storing passwords in GNOME keyring - optdepends = kwallet: for storing passwords in KWallet - optdepends = libva-intel-driver: for hardware video acceleration with Intel GPUs - optdepends = libva-mesa-driver: for hardware video acceleration with AMD/ATI GPUs - optdepends = libva-vdpau-driver: for hardware video acceleration with NVIDIA GPUs + optdepends = org.freedesktop.secrets: password storage backend on GNOME / Xfce + optdepends = kwallet: for storing passwords in KWallet on KDE desktops 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 = https://github.com/Eloston/ungoogled-chromium/archive/83.0.4103.61-1.tar.gz source = chromium-launcher-6.tar.gz::https://github.com/foutrelis/chromium-launcher/archive/v6.tar.gz - source = https://github.com/Eloston/ungoogled-chromium/archive/81.0.4044.138-1.tar.gz - source = rename-Relayout-in-DesktopWindowTreeHostPlatform.patch - source = rebuild-Linux-frame-button-cache-when-activation.patch - source = clean-up-a-call-to-set_utf8.patch - source = icu67.patch - source = chromium-widevine.patch - source = chromium-skia-harmony.patch - 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 + source = fix-intel-vaapi-wayland.patch + source = clean-up-a-call-to-set_utf8.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 + sha256sums = 4961f20c4ee6a94490e823f1b1c4128147068f1ce9cfc509e81815f2101405bc + sha256sums = 6097c563d883a003cf5e16448e2b2cd08204e2f3c87c500aef21325c3c29da43 sha256sums = 04917e3cd4307d8e31bfb0027a5dce6d086edb10ff8a716024fbb8bb0c7dccf1 - sha256sums = a01a35454dcd3c789e4e536751ecd655959b544b56ffd241a7942d9912749da1 - sha256sums = ae3bf107834bd8eda9a3ec7899fe35fde62e6111062e5def7d24bf49b53db3db - sha256sums = 46f7fc9768730c460b27681ccf3dc2685c7e1fd22d70d3a82d9e57e3389bb014 - sha256sums = 58c41713eb6fb33b6eef120f4324fa1fb8123b1fbc4ecbe5662f1f9779b9b6af - sha256sums = 5315977307e69d20b3e856d3f8724835b08e02085a4444a5c5cefea83fd7d006 - sha256sums = 709e2fddba3c1f2ed4deb3a239fc0479bfa50c46e054e7f32db4fb1365fed070 - sha256sums = 771292942c0901092a402cc60ee883877a99fb804cb54d568c8c6c94565a48e1 - sha256sums = 24ada570fdac8156ce91ee790a860b2cac7689da8b4fb5cfadc59f1f8df7e658 sha256sums = babda4f5c1179825797496898d77334ac067149cac03d797ab27ac69671a7feb sha256sums = 0ec6ee49113cc8cc5036fa008519b94137df6987bf1f9fbffb2d42d298af868a - sha256sums = fad5e678d62de0e45db1c2aa871628fdc981f78c26392c1dccc457082906a350 - sha256sums = 1dd330409094dc4bf393f00a51961a983360ccf99affd4f97a61d885129d326e + sha256sums = f6335d1e14e4ed865f37695d67df18008c8664778620e698bb46c35b88a8b4c2 + sha256sums = 58c41713eb6fb33b6eef120f4324fa1fb8123b1fbc4ecbe5662f1f9779b9b6af + sha256sums = 675fb3d6276cce569a641436465f58d5709d1d4a5f62b7052989479fd4aaea24 + sha256sums = 0e2a78e4aa7272ab0ff4a4c467750e01bad692a026ad9828aaf06d2a9418b9d8 + sha256sums = 50687079426094f2056d1f4806dc30fc8d6bad16190520e57ba087ec5db1d778 + sha256sums = 071326135bc25226aa165639dff80a03670a17548f2d2ff5cc4f40982b39c52a + sha256sums = 3d7f20e1d2ee7d73ed25e708c0d59a0cb215fcce10a379e3d48a856533c4b0b7 + sha256sums = d793842e9584bf75e3779918297ba0ffa6dd05394ef5b2bf5fb73aa9c86a7e2f + sha256sums = e042024423027ad3ef729a7e4709bdf9714aea49d64cfbbf46a645a05703abc2 + sha256sums = 3e5ba8c0a70a4bc673deec0c61eb2b58f05a4c784cbdb7c8118be1eb6580db6d + sha256sums = 771292942c0901092a402cc60ee883877a99fb804cb54d568c8c6c94565a48e1 pkgname = ungoogled-chromium diff --git a/PKGBUILD b/PKGBUILD index 33f4a8d..78f7178 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -3,59 +3,62 @@ # Derived from official Chromium and Inox PKGBUILDS and ungoogled-chromium buildkit pkgname=ungoogled-chromium -# Commit or tag for the upstream ungoogled-chromium repo -_ungoogled_version='81.0.4044.138-1' -_chromium_version=${_ungoogled_version%-*} -_ungoogled_revision=${_ungoogled_version#*-} -pkgver=${_chromium_version} -pkgrel=$_ungoogled_revision +pkgver=83.0.4103.61 +pkgrel=1 +# sometimes an ungoogled patches can be combined with a new chromium release +# only if the release only includes security fixes +_ungoogled_ver=83.0.4103.61-1 _launcher_ver=6 pkgdesc="A lightweight approach to removing Google web service dependency" arch=('x86_64') url="https://github.com/Eloston/ungoogled-chromium" license=('BSD') depends=('gtk3' 'nss' 'alsa-lib' 'xdg-utils' 'libxss' 'libcups' 'libgcrypt' - 'ttf-font' 'systemd' 'dbus' 'libpulse' 'pciutils' 'json-glib' 'libva' - 'desktop-file-utils' 'hicolor-icon-theme' 'jsoncpp' 'openjpeg2') + 'ttf-liberation' 'systemd' 'dbus' 'libpulse' 'pciutils' 'json-glib' 'libva' + 'desktop-file-utils' 'hicolor-icon-theme') makedepends=('python' 'python2' 'gperf' 'yasm' 'mesa' 'ninja' 'nodejs' 'git' - 'clang' 'lld' 'gn' 'llvm' 'quilt') + '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' - 'gnome-keyring: for storing passwords in GNOME keyring' - 'kwallet: for storing passwords in KWallet' - 'libva-intel-driver: for hardware video acceleration with Intel GPUs' - 'libva-mesa-driver: for hardware video acceleration with AMD/ATI GPUs' - 'libva-vdpau-driver: for hardware video acceleration with NVIDIA GPUs') -source=(https://commondatastorage.googleapis.com/chromium-browser-official/chromium-${_chromium_version}.tar.xz + 'org.freedesktop.secrets: password storage backend on GNOME / Xfce' + '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 + https://github.com/Eloston/ungoogled-chromium/archive/$_ungoogled_ver.tar.gz chromium-launcher-$_launcher_ver.tar.gz::https://github.com/foutrelis/chromium-launcher/archive/v$_launcher_ver.tar.gz - https://github.com/Eloston/ungoogled-chromium/archive/$_ungoogled_version.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 - 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' + '6097c563d883a003cf5e16448e2b2cd08204e2f3c87c500aef21325c3c29da43' '04917e3cd4307d8e31bfb0027a5dce6d086edb10ff8a716024fbb8bb0c7dccf1' - 'a01a35454dcd3c789e4e536751ecd655959b544b56ffd241a7942d9912749da1' - 'ae3bf107834bd8eda9a3ec7899fe35fde62e6111062e5def7d24bf49b53db3db' - '46f7fc9768730c460b27681ccf3dc2685c7e1fd22d70d3a82d9e57e3389bb014' - '58c41713eb6fb33b6eef120f4324fa1fb8123b1fbc4ecbe5662f1f9779b9b6af' - '5315977307e69d20b3e856d3f8724835b08e02085a4444a5c5cefea83fd7d006' - '709e2fddba3c1f2ed4deb3a239fc0479bfa50c46e054e7f32db4fb1365fed070' - '771292942c0901092a402cc60ee883877a99fb804cb54d568c8c6c94565a48e1' - '24ada570fdac8156ce91ee790a860b2cac7689da8b4fb5cfadc59f1f8df7e658' 'babda4f5c1179825797496898d77334ac067149cac03d797ab27ac69671a7feb' '0ec6ee49113cc8cc5036fa008519b94137df6987bf1f9fbffb2d42d298af868a' - 'fad5e678d62de0e45db1c2aa871628fdc981f78c26392c1dccc457082906a350' - '1dd330409094dc4bf393f00a51961a983360ccf99affd4f97a61d885129d326e') -provides=('chromium') -conflicts=('chromium') + 'f6335d1e14e4ed865f37695d67df18008c8664778620e698bb46c35b88a8b4c2' + '58c41713eb6fb33b6eef120f4324fa1fb8123b1fbc4ecbe5662f1f9779b9b6af' + '675fb3d6276cce569a641436465f58d5709d1d4a5f62b7052989479fd4aaea24' + '0e2a78e4aa7272ab0ff4a4c467750e01bad692a026ad9828aaf06d2a9418b9d8' + '50687079426094f2056d1f4806dc30fc8d6bad16190520e57ba087ec5db1d778' + '071326135bc25226aa165639dff80a03670a17548f2d2ff5cc4f40982b39c52a' + '3d7f20e1d2ee7d73ed25e708c0d59a0cb215fcce10a379e3d48a856533c4b0b7' + 'd793842e9584bf75e3779918297ba0ffa6dd05394ef5b2bf5fb73aa9c86a7e2f' + 'e042024423027ad3ef729a7e4709bdf9714aea49d64cfbbf46a645a05703abc2' + '3e5ba8c0a70a4bc673deec0c61eb2b58f05a4c784cbdb7c8118be1eb6580db6d' + '771292942c0901092a402cc60ee883877a99fb804cb54d568c8c6c94565a48e1') # 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 @@ -81,13 +84,12 @@ declare -gA _system_libs=( [zlib]=minizip ) _unwanted_bundled_libs=( - ${!_system_libs[@]} - ${_system_libs[libjpeg]+libjpeg_turbo} + $(printf "%s\n" ${!_system_libs[@]} | sed 's/^libjpeg$/&_turbo/') ) depends+=(${_system_libs[@]}) prepare() { - cd "$srcdir/chromium-${_chromium_version}" + cd "$srcdir/chromium-$pkgver" # Allow building against system libraries in official builds sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \ @@ -99,35 +101,46 @@ 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 + + # https://chromium-review.googlesource.com/c/chromium/src/+/2174199 + patch -Np1 -i ../make-some-of-blink-custom-iterators-STL-compatible.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/+/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 - - # https://bugs.chromium.org/p/chromium/issues/detail?id=1064078 - patch -Np1 -i ../eglGetMscRateCHROMIUM.patch + # Fix VA-API on Intel on Wayland + patch -Np1 -i ../fix-intel-vaapi-wayland.patch - msg2 'Pruning binaries' - _ungoogled_repo="$srcdir/$pkgname-${_ungoogled_version}" + # Ungoogled Chromium changes + _ungoogled_repo="$srcdir/$_pkgname-$_ungoogled_ver" _utils="${_ungoogled_repo}/utils" + msg2 'Pruning binaries' python "$_utils/prune_binaries.py" ./ "$_ungoogled_repo/pruning.list" msg2 'Applying patches' python "$_utils/patches.py" apply ./ "$_ungoogled_repo/patches" @@ -145,13 +158,11 @@ prepare() { # added benefit of not having to list all the remaining libraries local _lib for _lib in ${_unwanted_bundled_libs[@]}; do - find -type f -path "*third_party/$_lib/*" \ - \! -path "*third_party/$_lib/chromium/*" \ - \! -path "*third_party/$_lib/google/*" \ - \! -path './base/third_party/icu/*' \ - \! -path './third_party/crashpad/crashpad/third_party/zlib/zlib_crashpad.h' \ - \! -path './third_party/pdfium/third_party/freetype/include/pstables.h' \ - \! -path './third_party/yasm/run_yasm.py' \ + 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 done @@ -163,7 +174,7 @@ prepare() { build() { make -C chromium-launcher-$_launcher_ver - cd "$srcdir/chromium-${_chromium_version}" + cd "$srcdir/chromium-$pkgver" if check_buildoption ccache y; then # Avoid falling back to preprocessor mode when sources contain time macros @@ -172,15 +183,36 @@ build() { export CC=clang export CXX=clang++ - export AR=llvm-ar - export NM=llvm-nm + export AR=ar + export NM=nm + + 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') + fi - _ungoogled_repo="$srcdir/$pkgname-${_ungoogled_version}" - mkdir -p out/Default - # Assemble GN flags - cp "$_ungoogled_repo/flags.gn" "out/Default/args.gn" - printf '\n' >> "out/Default/args.gn" - cat "$srcdir/flags.archlinux.gn" >> "out/Default/args.gn" + if check_option strip y; then + _flags+=('symbol_level=0') + fi + + # Append ungoogled chromium flags to _flags array + _ungoogled_repo="$srcdir/$pkgname-$_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' @@ -192,9 +224,9 @@ build() { CXXFLAGS+=' -Wno-unknown-warning-option' msg2 'Configuring Chromium' - gn gen out/Default --script-executable=/usr/bin/python2 --fail-on-unused-args + gn gen out/Release --args="${_flags[*]}" --script-executable=/usr/bin/python2 msg2 'Building Chromium' - ninja -C out/Default chrome chrome_sandbox chromedriver + ninja -C out/Release chrome chrome_sandbox chromedriver } package() { @@ -203,15 +235,15 @@ package() { install -Dm644 LICENSE \ "$pkgdir/usr/share/licenses/chromium/LICENSE.launcher" - cd "$srcdir/chromium-${_chromium_version}" + cd "$srcdir/chromium-$pkgver" + + 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/${pkgname#ungoogled-}/chromedriver "$pkgdir/usr/bin/chromedriver" install -Dm644 ../chromium-drirc-disable-10bpc-color-configs.conf \ "$pkgdir/usr/share/drirc.d/10-$pkgname.conf" - install -D out/Default/chrome "$pkgdir/usr/lib/chromium/chromium" - install -Dm4755 out/Default/chrome_sandbox "$pkgdir/usr/lib/chromium/chrome-sandbox" - ln -s /usr/lib/${pkgname#ungoogled-}/chromedriver "$pkgdir/usr/bin/chromedriver" - install -Dm644 chrome/installer/linux/common/desktop.template \ "$pkgdir/usr/share/applications/chromium.desktop" install -Dm644 chrome/app/resources/manpage.1.in \ @@ -224,13 +256,13 @@ package() { "$pkgdir/usr/share/man/man1/chromium.1" cp \ - out/Default/{chrome_{100,200}_percent,resources}.pak \ - out/Default/{*.bin,chromedriver} \ + out/Release/{chrome_{100,200}_percent,resources}.pak \ + out/Release/{*.bin,chromedriver} \ "$pkgdir/usr/lib/chromium/" - install -Dm644 -t "$pkgdir/usr/lib/chromium/locales" out/Default/locales/*.pak + install -Dm644 -t "$pkgdir/usr/lib/chromium/locales" out/Release/locales/*.pak if [[ -z ${_system_libs[icu]+set} ]]; then - cp out/Default/icudtl.dat "$pkgdir/usr/lib/chromium/" + cp out/Release/icudtl.dat "$pkgdir/usr/lib/chromium/" fi for size in 24 48 64 128 256; do 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 0000000..570f7b3 --- /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 +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 +Commit-Queue: Ken Rockot +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 ++ + #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 0000000..5e1df00 --- /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 +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>. + +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 +Commit-Queue: Hiroki Nakagawa +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 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 helper_; + scoped_refptr 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(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 0000000..974b49c --- /dev/null +++ b/chromium-83-gcc-10.patch @@ -0,0 +1,64 @@ +From e473f41284ccc8fa4bc4622d087194b18a1ec23a Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann +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 ++#include + + 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 ++#include + + #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 ++#include + + 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 ++ + 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 32f0ae2..0000000 --- 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/chromium.install b/chromium.install new file mode 100644 index 0000000..c2b5000 --- /dev/null +++ b/chromium.install @@ -0,0 +1,16 @@ +post_upgrade() { + if (($(vercmp $2 42.0.2311.90-1) < 0)); then + echo ':: This Chromium package no longer supports custom flags passed via the' + echo ' /etc/chromium/default file (or any other files under /etc/chromium/).' + echo + echo ' The new /usr/bin/chromium launcher script will automatically detect' + echo ' Pepper Flash (if installed) and pass the correct flags to Chromium.' + echo + echo ' If you need to pass extra command-line arguments to Chromium, you' + echo ' can put them in a "chromium-flags.conf" file under $HOME/.config/' + echo ' (or $XDG_CONFIG_HOME). Arguments are split on whitespace and shell' + echo ' quoting rules apply but no further parsing is performed.' + fi +} + +# vim:set ts=2 sw=2 et: diff --git a/eglGetMscRateCHROMIUM.patch b/eglGetMscRateCHROMIUM.patch deleted file mode 100644 index 0755763..0000000 --- a/eglGetMscRateCHROMIUM.patch +++ /dev/null @@ -1,604 +0,0 @@ -From 5cddfb828ddd82fc741549d5ee44cd9b94bd97f5 Mon Sep 17 00:00:00 2001 -From: Jonah Ryan-Davis -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 -Commit-Queue: Jonah Ryan-Davis -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 . The rate is expressed in Hertz -+ as / . If the MSC rate in Hertz is an -+ integer, then will be 1 and 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 . The rate is expressed in Hertz -- as / . If the MSC rate in Hertz is an -- integer, then will be 1 and 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( - Mock_eglGetFrameTimestampsANDROID); -- if (strcmp(name, "eglGetMscRateCHROMIUM") == 0) -- return reinterpret_cast(Mock_eglGetMscRateCHROMIUM); -+ if (strcmp(name, "eglGetMscRateANGLE") == 0) -+ return reinterpret_cast(Mock_eglGetMscRateANGLE); - if (strcmp(name, "eglGetNativeClientBufferANDROID") == 0) - return reinterpret_cast( - 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( -- GetGLProcAddress("eglGetMscRateCHROMIUM")); -+ if (ext.b_EGL_ANGLE_sync_control_rate) { -+ fn.eglGetMscRateANGLEFn = reinterpret_cast( -+ 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(numerator) << ", " - << static_cast(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 0000000..8e87b10 --- /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 df699d5..0000000 --- a/flags.archlinux.gn +++ /dev/null @@ -1,32 +0,0 @@ -blink_symbol_level=0 -custom_toolchain="//build/toolchain/linux/unbundle:default" -enable_iterator_debugging=false -enable_swiftshader=false -fatal_linker_warnings=false -ffmpeg_branding="ChromeOS" -gold_path="" -goma_dir="" -host_toolchain="//build/toolchain/linux/unbundle:default" -icu_use_data_file=false -is_clang=true -is_debug=false -link_pulseaudio=true -linux_use_bundled_binutils=false -proprietary_codecs=true -symbol_level=0 -use_cups=true -use_custom_libcxx=false -use_gio=true -use_gnome_keyring=false -use_kerberos=false -use_libjpeg_turbo=true -use_lld=true -use_openh264=false -use_pulseaudio=true -use_sysroot=false -use_system_freetype=true -use_system_harfbuzz=true -use_system_lcms2=true -use_system_libjpeg=true -use_system_zlib=true -use_vaapi=true diff --git a/icu67.patch b/icu67.patch deleted file mode 100644 index bcfcb18..0000000 --- a/icu67.patch +++ /dev/null @@ -1,169 +0,0 @@ -From 2b107e7670ffb43719a66ee4a55ab408a5dcf2a5 Mon Sep 17 00:00:00 2001 -From: Ujjwal Sharma -Date: Wed, 22 Apr 2020 12:20:17 +0530 -Subject: [PATCH] deps: V8: backport 3f8dc4b2e5ba - -Original commit message: - - [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 - Commit-Queue: Frank Tang - Cr-Commit-Position: refs/heads/master@{#67027} - -Refs: https://github.com/v8/v8/commit/3f8dc4b2e5baf77b463334c769af85b79d8c1463 ---- - common.gypi | 2 +- - deps/v8/src/objects/js-number-format.cc | 72 +++++++++++++------------ - 2 files changed, 38 insertions(+), 36 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::New(Isolate* isolate, - } - - namespace { --Maybe IcuFormatNumber( -+Maybe IcuFormatNumber( - Isolate* isolate, - const icu::number::LocalizedNumberFormatter& number_format, -- Handle numeric_obj, icu::FieldPositionIterator* fp_iter) { -+ Handle numeric_obj, icu::number::FormattedNumber* formatted) { - // If it is BigInt, handle it differently. - UErrorCode status = U_ZERO_ERROR; -- icu::number::FormattedNumber formatted; - if (numeric_obj->IsBigInt()) { - Handle big_int = Handle::cast(numeric_obj); - Handle big_int_string; - ASSIGN_RETURN_ON_EXCEPTION_VALUE(isolate, big_int_string, - BigInt::ToString(isolate, big_int), -- Nothing()); -- formatted = number_format.formatDecimal( -+ Nothing()); -+ *formatted = number_format.formatDecimal( - {big_int_string->ToCString().get(), big_int_string->length()}, status); - } else { - double number = numeric_obj->Number(); -- formatted = number_format.formatDouble(number, status); -+ *formatted = number_format.formatDouble(number, status); - } - if (U_FAILURE(status)) { - // This happen because of icu data trimming trim out "unit". - // See https://bugs.chromium.org/p/v8/issues/detail?id=8641 -- THROW_NEW_ERROR_RETURN_VALUE(isolate, -- NewTypeError(MessageTemplate::kIcuError), -- Nothing()); -- } -- if (fp_iter) { -- formatted.getAllFieldPositions(*fp_iter, status); -+ THROW_NEW_ERROR_RETURN_VALUE( -+ isolate, NewTypeError(MessageTemplate::kIcuError), Nothing()); - } -- icu::UnicodeString result = formatted.toString(status); -- if (U_FAILURE(status)) { -- THROW_NEW_ERROR_RETURN_VALUE(isolate, -- NewTypeError(MessageTemplate::kIcuError), -- Nothing()); -- } -- return Just(result); -+ return Just(true); - } - - } // namespace -@@ -1243,10 +1232,16 @@ MaybeHandle JSNumberFormat::FormatNumeric( - Handle numeric_obj) { - DCHECK(numeric_obj->IsNumeric()); - -- Maybe maybe_format = -- IcuFormatNumber(isolate, number_format, numeric_obj, nullptr); -+ icu::number::FormattedNumber formatted; -+ Maybe maybe_format = -+ IcuFormatNumber(isolate, number_format, numeric_obj, &formatted); - MAYBE_RETURN(maybe_format, Handle()); -- return Intl::ToString(isolate, maybe_format.FromJust()); -+ UErrorCode status = U_ZERO_ERROR; -+ icu::UnicodeString result = formatted.toString(status); -+ if (U_FAILURE(status)) { -+ THROW_NEW_ERROR(isolate, NewTypeError(MessageTemplate::kIcuError), String); -+ } -+ return Intl::ToString(isolate, result); - } - - namespace { -@@ -1359,12 +1354,18 @@ std::vector FlattenRegionsToParts( - } - - namespace { --Maybe ConstructParts(Isolate* isolate, const icu::UnicodeString& formatted, -- icu::FieldPositionIterator* fp_iter, -+Maybe ConstructParts(Isolate* isolate, -+ icu::number::FormattedNumber* formatted, - Handle result, int start_index, - Handle numeric_obj, bool style_is_unit) { -+ UErrorCode status = U_ZERO_ERROR; -+ icu::UnicodeString formatted_text = formatted->toString(status); -+ if (U_FAILURE(status)) { -+ THROW_NEW_ERROR_RETURN_VALUE( -+ isolate, NewTypeError(MessageTemplate::kIcuError), Nothing()); -+ } - DCHECK(numeric_obj->IsNumeric()); -- int32_t length = formatted.length(); -+ int32_t length = formatted_text.length(); - int index = start_index; - if (length == 0) return Just(index); - -@@ -1373,13 +1374,14 @@ Maybe 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. -- regions.push_back(NumberFormatSpan(-1, 0, formatted.length())); -+ regions.push_back(NumberFormatSpan(-1, 0, formatted_text.length())); - - { -- icu::FieldPosition fp; -- while (fp_iter->next(fp)) { -- regions.push_back(NumberFormatSpan(fp.getField(), fp.getBeginIndex(), -- fp.getEndIndex())); -+ icu::ConstrainedFieldPosition cfp; -+ cfp.constrainCategory(UFIELD_CATEGORY_NUMBER); -+ while (formatted->nextPosition(cfp, status)) { -+ regions.push_back( -+ NumberFormatSpan(cfp.getField(), cfp.getStart(), cfp.getLimit())); - } - } - -@@ -1401,7 +1403,7 @@ Maybe ConstructParts(Isolate* isolate, const icu::UnicodeString& formatted, - Handle substring; - ASSIGN_RETURN_ON_EXCEPTION_VALUE( - isolate, substring, -- Intl::ToString(isolate, formatted, part.begin_pos, part.end_pos), -+ Intl::ToString(isolate, formatted_text, part.begin_pos, part.end_pos), - Nothing()); - Intl::AddElement(isolate, result, index, field_type_string, substring); - ++index; -@@ -1421,14 +1423,14 @@ MaybeHandle JSNumberFormat::FormatToParts( - number_format->icu_number_formatter().raw(); - CHECK_NOT_NULL(fmt); - -- icu::FieldPositionIterator fp_iter; -- Maybe maybe_format = -- IcuFormatNumber(isolate, *fmt, numeric_obj, &fp_iter); -+ icu::number::FormattedNumber formatted; -+ Maybe maybe_format = -+ IcuFormatNumber(isolate, *fmt, numeric_obj, &formatted); - MAYBE_RETURN(maybe_format, Handle()); - - Handle result = factory->NewJSArray(0); - Maybe 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_RETURN(maybe_format_to_parts, Handle()); - 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 0000000..eb30ad2 --- /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 +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 +Commit-Queue: Jochen Eisinger +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 ++ + #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 0000000..e270242 --- /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 +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 +Commit-Queue: François Doray +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 ++#include + + #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 0000000..5e9d37a --- /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 +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 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 +Commit-Queue: David Tseng +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 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 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 0000000..30cbdef --- /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 +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 +Commit-Queue: Piotr Tworek +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 + 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 + 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 40764b3..0000000 --- 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 -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 -Commit-Queue: Scott Violet -Reviewed-by: Scott Violet -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 diff --git a/rename-Relayout-in-DesktopWindowTreeHostPlatform.patch b/rename-Relayout-in-DesktopWindowTreeHostPlatform.patch deleted file mode 100644 index eda3cbd..0000000 --- a/rename-Relayout-in-DesktopWindowTreeHostPlatform.patch +++ /dev/null @@ -1,64 +0,0 @@ -From 5a2cd2409c7d65c019ad9f4595a4e85315857ac4 Mon Sep 17 00:00:00 2001 -From: Tom Anderson -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 -Reviewed-by: Scott Violet -Commit-Queue: Thomas Anderson -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/v8-remove-soon-to-be-removed-getAllFieldPositions.patch b/v8-remove-soon-to-be-removed-getAllFieldPositions.patch new file mode 100644 index 0000000..41d1ace --- /dev/null +++ b/v8-remove-soon-to-be-removed-getAllFieldPositions.patch @@ -0,0 +1,172 @@ +From 3f8dc4b2e5baf77b463334c769af85b79d8c1463 Mon Sep 17 00:00:00 2001 +From: Frank Tang +Date: Fri, 3 Apr 2020 23:13:54 -0700 +Subject: [PATCH] [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 +Commit-Queue: Frank Tang +Cr-Commit-Position: refs/heads/master@{#67027} +--- + src/objects/js-number-format.cc | 77 +++++++++++++++++---------------- + 1 file changed, 39 insertions(+), 38 deletions(-) + +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::New(Isolate* isolate, + } + + namespace { +-Maybe IcuFormatNumber( ++Maybe IcuFormatNumber( + Isolate* isolate, + const icu::number::LocalizedNumberFormatter& number_format, +- Handle numeric_obj, icu::FieldPositionIterator* fp_iter) { ++ Handle numeric_obj, icu::number::FormattedNumber* formatted) { + // If it is BigInt, handle it differently. + UErrorCode status = U_ZERO_ERROR; +- icu::number::FormattedNumber formatted; + if (numeric_obj->IsBigInt()) { + Handle big_int = Handle::cast(numeric_obj); + Handle big_int_string; + ASSIGN_RETURN_ON_EXCEPTION_VALUE(isolate, big_int_string, + BigInt::ToString(isolate, big_int), +- Nothing()); +- formatted = number_format.formatDecimal( ++ Nothing()); ++ *formatted = number_format.formatDecimal( + {big_int_string->ToCString().get(), big_int_string->length()}, status); + } else { + double number = numeric_obj->IsNaN() + ? std::numeric_limits::quiet_NaN() + : numeric_obj->Number(); +- formatted = number_format.formatDouble(number, status); ++ *formatted = number_format.formatDouble(number, status); + } + if (U_FAILURE(status)) { + // This happen because of icu data trimming trim out "unit". + // See https://bugs.chromium.org/p/v8/issues/detail?id=8641 +- THROW_NEW_ERROR_RETURN_VALUE(isolate, +- NewTypeError(MessageTemplate::kIcuError), +- Nothing()); +- } +- if (fp_iter) { +- formatted.getAllFieldPositions(*fp_iter, status); +- } +- icu::UnicodeString result = formatted.toString(status); +- if (U_FAILURE(status)) { +- THROW_NEW_ERROR_RETURN_VALUE(isolate, +- NewTypeError(MessageTemplate::kIcuError), +- Nothing()); ++ THROW_NEW_ERROR_RETURN_VALUE( ++ isolate, NewTypeError(MessageTemplate::kIcuError), Nothing()); + } +- return Just(result); ++ return Just(true); + } + + } // namespace +@@ -1289,10 +1278,16 @@ MaybeHandle JSNumberFormat::FormatNumeric( + Handle numeric_obj) { + DCHECK(numeric_obj->IsNumeric()); + +- Maybe maybe_format = +- IcuFormatNumber(isolate, number_format, numeric_obj, nullptr); ++ icu::number::FormattedNumber formatted; ++ Maybe maybe_format = ++ IcuFormatNumber(isolate, number_format, numeric_obj, &formatted); + MAYBE_RETURN(maybe_format, Handle()); +- return Intl::ToString(isolate, maybe_format.FromJust()); ++ UErrorCode status = U_ZERO_ERROR; ++ icu::UnicodeString result = formatted.toString(status); ++ if (U_FAILURE(status)) { ++ THROW_NEW_ERROR(isolate, NewTypeError(MessageTemplate::kIcuError), String); ++ } ++ return Intl::ToString(isolate, result); + } + + namespace { +@@ -1405,12 +1400,18 @@ std::vector FlattenRegionsToParts( + } + + namespace { +-Maybe ConstructParts(Isolate* isolate, const icu::UnicodeString& formatted, +- icu::FieldPositionIterator* fp_iter, ++Maybe ConstructParts(Isolate* isolate, ++ icu::number::FormattedNumber* formatted, + Handle result, int start_index, + Handle numeric_obj, bool style_is_unit) { ++ UErrorCode status = U_ZERO_ERROR; ++ icu::UnicodeString formatted_text = formatted->toString(status); ++ if (U_FAILURE(status)) { ++ THROW_NEW_ERROR_RETURN_VALUE( ++ isolate, NewTypeError(MessageTemplate::kIcuError), Nothing()); ++ } + DCHECK(numeric_obj->IsNumeric()); +- int32_t length = formatted.length(); ++ int32_t length = formatted_text.length(); + int index = start_index; + if (length == 0) return Just(index); + +@@ -1419,13 +1420,14 @@ Maybe 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. +- regions.push_back(NumberFormatSpan(-1, 0, formatted.length())); ++ regions.push_back(NumberFormatSpan(-1, 0, formatted_text.length())); + + { +- icu::FieldPosition fp; +- while (fp_iter->next(fp)) { +- regions.push_back(NumberFormatSpan(fp.getField(), fp.getBeginIndex(), +- fp.getEndIndex())); ++ icu::ConstrainedFieldPosition cfp; ++ cfp.constrainCategory(UFIELD_CATEGORY_NUMBER); ++ while (formatted->nextPosition(cfp, status)) { ++ regions.push_back( ++ NumberFormatSpan(cfp.getField(), cfp.getStart(), cfp.getLimit())); + } + } + +@@ -1447,7 +1449,7 @@ Maybe ConstructParts(Isolate* isolate, const icu::UnicodeString& formatted, + Handle substring; + ASSIGN_RETURN_ON_EXCEPTION_VALUE( + isolate, substring, +- Intl::ToString(isolate, formatted, part.begin_pos, part.end_pos), ++ Intl::ToString(isolate, formatted_text, part.begin_pos, part.end_pos), + Nothing()); + Intl::AddElement(isolate, result, index, field_type_string, substring); + ++index; +@@ -1467,20 +1469,19 @@ MaybeHandle JSNumberFormat::FormatToParts( + number_format->icu_number_formatter().raw(); + CHECK_NOT_NULL(fmt); + +- icu::FieldPositionIterator fp_iter; +- Maybe maybe_format = +- IcuFormatNumber(isolate, *fmt, numeric_obj, &fp_iter); ++ icu::number::FormattedNumber formatted; ++ Maybe maybe_format = ++ IcuFormatNumber(isolate, *fmt, numeric_obj, &formatted); + MAYBE_RETURN(maybe_format, Handle()); +- + UErrorCode status = U_ZERO_ERROR; ++ + bool style_is_unit = + Style::UNIT == StyleFromSkeleton(fmt->toSkeleton(status)); + CHECK(U_SUCCESS(status)); + + Handle result = factory->NewJSArray(0); +- Maybe maybe_format_to_parts = +- ConstructParts(isolate, maybe_format.FromJust(), &fp_iter, result, 0, +- numeric_obj, style_is_unit); ++ Maybe maybe_format_to_parts = ConstructParts( ++ isolate, &formatted, result, 0, numeric_obj, style_is_unit); + MAYBE_RETURN(maybe_format_to_parts, Handle()); + + return result; diff --git a/vaapi-build-fix.patch b/vaapi-build-fix.patch deleted file mode 100644 index 2b7851a..0000000 --- a/vaapi-build-fix.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 5b2ff215473e0526b5b24aeff4ad90d369b21c75 Mon Sep 17 00:00:00 2001 -From: Julien Isorce -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 -Reviewed-by: Miguel Casas -Commit-Queue: Julien Isorce -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 = -- cgit v1.2.3